如何制作一组结构

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并给它指定一个名称,例如*行,那么你可以使用 - >符号访问和改变结构中的每个项目.我似乎没有做对,也不确定为什么.

我的错误:

分段故障(核心转储)

Sha*_*ger 5

typedef line作为结构的指针,而不是结构本身.所以当你malloc基于the -ed 时sizeof line,你有十个指针的空间,而不是十个结构的副本.删除*之前linetypedef,所以你得到一个结构数组,而不是一个结构的(未分配的)指针数组.然后在索引指针后使用普通的点访问.

如果你真的想要一个指向struct的指针数组,你需要单独分配每个结构,这可能不是你想要的.