从C中的函数返回整数数组
我的程序如下从C中的函数返回整数数组,c,arrays,pointers,C,Arrays,Pointers,我的程序如下 #include<stdio.h> int *intial(int); int main (void) { int i, *b; b=intial(5); for(i=0;i<5;i++) printf("%d\t",*(b+i)); getch(); } int *intial(int t) { int i, *a; for(i=0;i<t;i++) a[i]=i;
#include<stdio.h>
int *intial(int);
int main (void)
{
int i, *b;
b=intial(5);
for(i=0;i<5;i++)
printf("%d\t",*(b+i));
getch();
}
int *intial(int t)
{
int i, *a;
for(i=0;i<t;i++)
a[i]=i;
return a;
}
#包括
int*初始(int);
内部主(空)
{
int i,*b;
b=初始值(5);
对于(i=0;i您需要使用malloc()
为数组分配内存。否则a
,因此b
,将不会指向任何特定内容。为了正常工作,您的函数应为
int *intial(int t)
{
int i;
int *a = malloc(t * sizeof(*a));
if (!a) return NULL; // error checking
for(i=0;i<t;i++) {
a[i]=i;
}
return a;
}
您希望a
在不初始化它的情况下指向何处?指针不是魔法…未定义的行为,因为a
未分配。请尝试int*a=malloc(t*sizeof(int));
。记住free(b)
在您的程序退出之前。可能重复和625482976472个类似问题。Bleeech…那是什么编码风格?Radom缩进、奇怪的东西等…您希望我们如何实际阅读此内容?我以前回答过类似的问题(不是重复):
int *intial(int t)
{
int i;
int *a = malloc(t * sizeof(*a));
if (!a) return NULL; // error checking
for(i=0;i<t;i++) {
a[i]=i;
}
return a;
}
int main()
{
int i;
int *b;
b=intial(5);
if (!b) {
fprintf(stderr, "Malloc error.\n");
return 1;
}
for(i=0;i<5;i++) {
printf("%d\t",*(b+i)); // *(b+i) should be replaced with b[i] for readability
}
free(b); // free the memory
return 0;
}