我很困惑如何創建一個結構數組。這裏是我的代碼:如何創建一個結構數組
#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
不是我的投票。不過,我的意見是站得住的 –