我正在解决一个删除链表中所有元素的程序,我遇到了以下问题:
当我使用返回类型为 void 的删除函数并检查主指针中的开始指针是否为 NULL 时,它不是并且给了我荒谬的结果
代码:
void deletes(struct node *start)
{
struct node *current,*next;
current=start;
while(current!=NULL)
{
next=current->link;
free(current);
start=next;
current=next;
}
start=NULL;
return ;
}
但是如果我改变返回类型,它工作正常:
struct node *deletes(struct node *start)
{
struct node *current,*next;
current=start;
while(current!=NULL)
{
next=current->link;
free(current);
start=next;
current=next;
}
start=NULL;
return start;
}
为什么 start=NULL 在第一个代码中起作用?
我的整个代码在这里