c - 如何使用 realloc 为结构中的数组分配内存?

标签 c struct

为什么我不能用这种方式为数组 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
}

最佳答案

正如您需要传递 numaddress 以让 scanf 分配给它一样,您需要传递x.a(并相应地更改匹配参数的类型,并在 fun 中使用 a)以便从内部分配给它有趣

关于c - 如何使用 realloc 为结构中的数组分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255400/

相关文章:

c - malloc/free,似乎获得了多次释放

c - 检查传递给 gdb 中函数的多维数组

c - 释放具有 char 指针的结构数组

go - Go中如何使用reflect递归解析嵌套结构?

c - Trie 数据结构

c - C 中的可移植性问题

C 字符串数组

c - 我混淆的按位运算

子进程可以在 C、Unix 中执行 waitpid() 和 wait()

c - 使用结构的邮政编码