我很困惑如何创建一个结构数组。这里是我的代码:如何创建一个结构数组
#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,并给它一个名称的指针如*线,那么你可以访问和使用的结构变异的每个项目 - >符号。我似乎没有把握好,不知道为什么。
我的错误:
分割故障(核心转储)
这将是没有第一句口语一个更好的答案,并与你改变什么解释,为什么它很重要。 'for(i; i <2; i ++)'表示法虽然是从问题中复制过来的,但它并不好,尤其是对于第二个循环,因为它访问未初始化的数据而引发未定义的行为。如果你不打算在初始化部分做任何事情,把它留空,但总是使用'for(i = 0; i <2; i ++)'或甚至(C99或更新)'for int i = 0; i <2; i ++)'并在循环之外放置'i'的定义。 –
@JonathanLeffler是索引变量'我'同样的原因对我的答案downvote以及?除了提及或者可能给出更详细的答案之外,我没有看到任何问题。 – tijko
不是我的投票。不过,我的意见是站得住的 –