Я пытаюсь узнать о вложенных структурах и указателях в C. Я сделал это в качестве теста:
typedef struct xyz xyz_t;
struct xyz{
int x, y, z;
};
xyz_t array[] = {
{.x = 14, .y = 16, .z = 18},
{.x = 34, .y = 36, .z = 38},
{.x = 64, .y = 66, .z = 68},
};
typedef struct blue blue_t;
struct blue
{
int *pointer;
};
int main()
{
blue_t red;
red.pointer = &array;
printf("%d",red.pointer[1].z);
}
Идея состоит в том, чтобы структура red
имела указатель, указывающий на array
, а затем print f.ex. array[1].z
.
Что я делаю не так? Компилятор говорит мне:
присваивание из несовместимого типа указателя
[- Wincompatible-pointer-types] red.pointer = &array;
запрос на членство x
в нечто, не являющееся структурой или объединением
printf("%d",red.pointer[2].x);