gpt4 book ai didi

c - 如何制作结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:16 24 4
gpt4 key购买 nike

我对如何制作结构数组感到困惑。这是我的代码:

#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;
}

我的困惑来自以下几点:根据我的理解,如果您有一个 typedef 并给它一个指向指针的名称,例如 *line,那么您可以使用 -> 符号访问和改变结构中的每个项目。我似乎没有做对,也不确定为什么。

我的错误:

段错误(核心转储)

最佳答案

您将 typedef line 作为指向结构的指针,而不是结构本身。因此,当您根据 sizeof 行 malloc 编辑时,您获得了用于十个指针的空间,而不是该结构的十个副本。删除 typedefline 之前的 *,这样您将获得一个结构数组,而不是一个指向结构的(未分配的)指针数组。然后在索引指针后使用普通的点访问。

如果您确实想要一个指向结构的指针数组,则需要单独分配每个结构,这可能不是您想要的。

关于c - 如何制作结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com