Я новичок в C и не могу понять, почему я получаю предупреждение о несовместимом типе poniter при инициализации. Соответствующие части кода:
struct a {
int address;
B * apples[8];
} A;
struct b {
int color;
} B;
У меня есть массивA называется a_list.Что я сейчас делаю:
B *b_list = a_list[i].apples; // i being an index in for loop
b_list[6].color = 0;
Выше работает правильно, но выдает предупреждение:
Initialization from incompatible pointer type.
Для того, чтобы это исправить, я считаю, что я должен делать
B ** b_list = a_list[i].apples; // as it is pointer to pointer.
So now b_list basically points to a pointer which points to an array of 6, yea?
So: (*b_list)[6].color // However this causes segmentation fault.
Это также работало правильно, когда в структуре A было B яблок [8], а не B * яблок [8].Тем не менее, использование этого решения не сохраняет изменения, внесенные в функции вне того места, где они были сделаны.
Пожалуйста, советуйте.