c - 如何动态地将内存分配给结构内的指针数组

标签 c data-structures dynamic-memory-allocation

这是我到目前为止所做的

struct test_case {
  int n;
  int *test[];
};


struct test_case *test_case_struct = (struct test_case *)malloc(
      sizeof(struct test_struct) + 100 * sizeof(int));

我需要在“test”指针数组中分配n个指针。据我所知,我需要为结构分配空间,然后为指针数组分配更多空间,但是当我尝试编译它时,我收到错误 对不完整类型 struct test_struct 无效使用 sizeof 运算符

如果有人可以请告诉我如何将n的值作为用户输入并使int *test [n]成为可能。

最佳答案

不要重复类型名称。因为你这样做了,你已经两次被自己的代码绊倒了。您犯了一个错误,输入了错误的结构标记,并将 int*int 混淆了。

更严格的分配看起来像这样

struct test_case *test_case_struct =
  malloc(sizeof (*test_case_struct) + sizeof (test_case_struct->test[0]) * 100);

这里将分配 test_case_struct 指向的任何大小,再加上 100 个 test_case_struct->test[0] 应该的大小。现在您可以使用结构定义,而无需中断对 malloc 的调用。如果您确实执行了重大更改(例如重命名 test),编译器会立即通知您。

关于c - 如何动态地将内存分配给结构内的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53407212/

相关文章:

c - 仅为数组的一个元素分配内存

c - 在二维数组中查找重复项 - 行和列

c - C中的结构通过引用传递

c - 只有字符串的第一个字符才会在 C 中打印

c - 添加另一条记录到动态内存数据库时出错

c++ - 为数组重新分配内存 C++

php - 在 PHP 中压缩 PNG 文件

c - 程序从给定字符串中删除所有连续的相同字母

c - 我什么时候应该释放 C 循环中使用的内存?

java - 如何对 BinarySearch() 进行部分匹配