这是我到目前为止所做的
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/