1 c arrays malloc struct pointers
我很困惑如何制作一个结构数组.这是我的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct line
{
int x;
} *line;
int main()
{
line *array = malloc(10 * sizeof(line));
int i = 0;
for(i; i < 2; i++)
{
array[i]->x = 5;
}
for(i; i < 2; i++)
{
printf("%d\n", array[i]->x);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的困惑来自以下内容:根据我的理解,如果你有一个typedef并给它指定一个名称,例如*行,那么你可以使用 - >符号访问和改变结构中的每个项目.我似乎没有做对,也不确定为什么.
我的错误:
分段故障(核心转储)
你typedef line作为结构的指针,而不是结构本身.所以当你malloc基于the -ed 时sizeof line,你有十个指针的空间,而不是十个结构的副本.删除*之前line的typedef,所以你得到一个结构数组,而不是一个结构的(未分配的)指针数组.然后在索引指针后使用普通的点访问.
如果你真的想要一个指向struct的指针数组,你需要单独分配每个结构,这可能不是你想要的.