Я пытаюсь распечатать список отдельно связанного списка, который я упомянул в тексте ссылки. Это работает, но я действительно получаю предупреждения компилятора:
Initialization discards qualifiers from pointer target type
(на объявлении запуска = голова) и
return discards qualifiers from pointer target type
(на операторе возврата) в этом коде:
/* Prints singly linked list and returns head pointer */
LIST *PrintList(const LIST *head)
{
LIST *start = head;
for (; start != NULL; start = start->next)
printf("%15s %d ea\n", head->str, head->count);
return head;
}
Я использую XCode. Какие-либо мысли?
Это вот эта часть:
LIST *start = head;
Параметр функции - указатель на константу, const LIST *head
; это означает, что вы не можете изменить то, на что он указывает. Однако указатель выше является неконстантой; его можно разыменовать и изменить.
Он должен быть const
:
const LIST *start = head;
То же самое относится и к возвращаемому типу.
Все, что говорит компилятор: "Эй, ты сказал вызывающей стороне "я не буду ничего менять", но ты открываешь возможности для этого"
.