Я пытаюсь научиться C, и, как и многие люди, я немного застрял в указателях. В любом случае, я сделал рекурсивную функцию, которая разрушает мой связанный список, но, как я отлаживал, когда я вернулся из функции, глава списка не является нулевым, как и должно быть, поэтому я предполагаю, что это является одним из основных недоразумений с указатели. Вот функция:C Linked-list Destroy Function
void destroy(struct node* n){
if(!n) return;
destroy(n->next);
free(n);
n = NULL; }
Заранее спасибо.
«n» - это локальная переменная, поэтому «n = NULL» имеет только локальный эффект, что означает, что он не имеет никакого эффекта, так как он находится в конце функции. – ruakh
Просьба показать код, который показывает, что голова не равна нулю. –
Расширяясь от того, что сказал @ruakh, если вы хотите изменить указатель, вы должны передать указатель на этот указатель (т. Е. 'Struct node **'), точно так же, как вам нужно было бы передать указатель, если вы хотите изменить что-нибудь еще. –