Вы должны помнить, что индексирование массива с помощью array[index]
эквивалентно операции *(array + index)
.Итак, давайте рассмотрим, что вы в данный момент делаете и почему это неправильно.
У вас есть переменная int **queue
, которая является указателем на указатель на int.И вы хотите извлечь фронт и поместить его в переменную int *front
.Ваш текущий подход:
int *front = (*queue)[0];
и переведенный с использованием эквивалента сверху дает:
int *front = *((*queue) + 0)
, первый (*queue)
разыменовывает queue
и дает int *
.Затем вы добавляете 0
к int *
, который дает тот же самый, и затем вы разыменовываете это.И что дает разыменование int *
?
Подсказка : вам не следует назначать int *foo
для int bar
напрямую с foo = bar
.
Переходя к другим проблемам, подписчикам массива необходимобыть целыми числами.Анализ типа int * rear
должен прояснить, почему array[rear]
выдает предупреждение.
Если int *rear
должен указывать на заднюю часть очереди, почемуне просто использовать его в качестве указателя вместо того, чтобы пытаться индексировать очередь с ним?:)