Я смущен относительно того, как сделать массив структур. Вот мой код:Как создать массив структур
#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;
}
Моя путаница происходит из следующих действий: В моем понимании, если у вас есть ЬурейеЕ и дать ему имя указателя, например * линии, то вы можете получить доступ и мутируют каждый элемент структуры, используя символ ->. Кажется, я не понимаю, почему и почему.
Моя ошибка:
вина Сегментация (ядро сбрасывали)
Это было бы лучшим ответом без разговорного первого предложения, а также с объяснением того, что вы изменили и почему это важно. Нотация 'for (i; i <2; i ++)' тоже не хороша, хотя она скопирована из вопроса - особенно для второго цикла, который вызывает неопределенное поведение, поскольку он обращается к неинициализированным данным. Если вы не собираетесь ничего делать в части инициализации, оставьте его пустым, но лучше всегда использовать 'for (i = 0; i <2; i ++)' или даже (C99 или новее) 'for (int i = 0; i <2; i ++) 'и отказаться от определения' i' вне петель. –
@JonathanLeffler была переменной индекса 'i' той же причиной для downvote в моем ответе? Помимо упоминания этого или, возможно, более подробного ответа, я не вижу в этом ничего плохого. – tijko
Не мой голос. Но мои комментарии стоят. –