为什么我不能用这种方式为数组 x.a
分配内存?编译器说 x.a
没有在 main 中初始化,但我想在函数 fun
中初始化数组。在这个函数中,我想为第一个元素创建内存并将其放入数组,为第二个元素创建内存并将其放入数组等。我应该在此代码中更改什么?
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *a;
} array;
void fun(int *a,int num)
{
int i;
for(i=0;i<num;i++)
{
a=(int*)realloc(a,(i+1)*sizeof(int));
scanf("%d",(a+i));
}
}
int main(int argc,char *argv[])
{
array x;
int i,num;
scanf("%d",&num); //number of elements in array *a (in struct)
fun(x.a,num);
for(i=0;i<num;i++)
printf("%2d",x.a[i]); //prints elements
}
最佳答案
正如您需要传递 num
的 address 以让 scanf
分配给它一样,您需要传递x.a
(并相应地更改匹配参数的类型,并在 fun
中使用 a
)以便从内部分配给它有趣
。
关于c - 如何使用 realloc 为结构中的数组分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255400/