C语言函数返回一个数组,之前有人写过有两种方法,指针&结构化,但试了试在DEV上都有错误,修改了一下,可以运行了:
1. 结构化
typedef struct
{int a[10];
}RET;
RET retArray()
{
RET x;
int i=0;
for(i=0;i<10;i++)
x.a[i]=i;
return x;
}
int main()
{
RET y=retArray(); //这里不能是int b[10];b=retArray().a; int* to int*[10],这个转化不对
for(int i=0;i<10;i++)
{
printf("%d\n",y.a[i]);
}
return 0;
}
2.指针,问题也是出在转化,还有分配空间那个malloc它没有说(int*),不过这个解决了也不能用
int *retArray(int a[],int n)
{ for(int i=0;i<n;i++)
{a[i]=i;}
return a;
}
int main()
{
int *retArray(int a[],int n);
int *b;
b=retArray(b,10);// 这里必须要给个空数组b在里面,有个百度知道的问答,里面还定义了一个c[],但其实c[]没有必要,一个就够了
for(int i=0;i<10;i++)
{
printf("%d\n",b[i]);
}
return 0;
}
就是这些,代码源于网络,但讲的是改正了的代码,HALF转载HALF原创?C很容易出bug,还是对语言了解的不深入,注意细节吧。第一篇博文,从基础开始捡起C语言。
救苦救难红菩萨,有谁看过欢乐英雄吗?