我需要一个数组来保存函数fn1
中定义的4个值,所以我创建了一个数组:int somearray[4]
;在main()中。虽然我理解值可能会按数字somearray[1]=3;
分别输入数组,但我的数字是变量n1, n2, n3, n4
。
有没有办法实现这个目标?
我考虑过在函数中创建数组的可能性,然后将单个值转换为somearray[]
。
我显然对C很新,并且想到了返回阵列的想法也浮现在脑海中。我很确定这不对,但无论如何都会有所帮助。
提前致谢。
To Makoto:
main(){
int sumarray[4];
int n1,n2,n3,n4;
int fn1(){
n1=1;
n2=23;
n3=29;
n4=14;
sumarray[]={n1,n2,n3,n4}
return 0;
}
return 0;
}
好吧..至少那是我试图做的事情
答案 0 :(得分:1)
您可以执行以下操作:
char somearray[] = {n1, n2, n3, n4};
如果编写辅助函数,在堆栈上分配数组(即将数组放在局部变量中),则无法返回。这是因为它在堆栈中,并且将来基本上会被覆盖。例如,您不会说:
int *f() {
unsigned a[] = {n1, n2, n3, n4};
}
相反,您使用malloc
,它在堆上分配内存。所以,相比之下,你可以说,
int *f() {
unsigned *a = malloc(sizeof(int)*4);
...
return a;
}
答案 1 :(得分:1)
好的错误是在fn1运行后我可以在外部定义数组时尝试在函数中定义数组。谢谢你们。