ognjenjebot Ответов: 2

Как получить доступ к определенному элементу массива, если у меня есть указатель на структуру, которая имеет указатель и массив структур?


Как получить доступ к определенному элементу массива, если у меня есть указатель на структуру, которая имеет указатель на массив структур?


структурный узел {
int число;
};

очередь структуры {
struct node *array;
};

тап_п() {
структура очередей *очереди;
структурный узел *t;
queues = (struct red*)malloc(sizeof(struct queue));
очереди->array = (struct node*)malloc(10 * sizeof(struct node));
очереди->массив->число = 5;
очереди->(массив + 1)->число = 6
}

Что я уже пробовал:

очереди-массив-число могут получить доступ к первому элементу,но как получить доступ к другим элементам?

очереди->(array + i)->number не работает и
очереди->array[i]->number не работает

2 Ответов

Рейтинг:
8

OriginalGriff

Во-первых, заставьте его скомпилироваться! "красный" не объявлен:

queues = (struct red*)malloc(sizeof(struct queue));
Полагаю, вы имели в виду:
queues = (struct queue*)malloc(sizeof(struct queue));

Тогда просто используйте его как массив:
queues->array[1].number = 6;
struct node *n = queues->array;
for (int i = 0; i < 10; i++)
    {
    printf("%u\n", n[i]);
    }
Дать вам:
5
6
0
0
0
0
0
0
0
0
(Хотя нули могут быть заменены случайными данными, в зависимости от вашего компилятора)


Рейтинг:
13

Richard MacCutchan

Вам нужно использовать точку с referencer array[i] это правильная ссылка, а не указатель (я знаю, что это сбивает с толку, но это правило в C). Поэтому вы должны закодировать его следующим образом:

int i = 3; // or any other offset
queues->array[i].number = 6;