一个指针的困扰
建链表的函数的接口是一个二级指针,为什么不可以是一个一级指针呢
请高人指教
以下纯属个人理解:
建立链表可以是一级指针,但二级指针为优
仅以建立链表清除函数为例:
假设函数定义为:void clear(Node* first);
则相应的函数调用为clear(head);
即head与first有相同的类型。调用时,指针变量head的值被复制到first,两者都指向链表的起点.
释放链表后,指针first成为NULL,但在主函数的head仍指向原来的地址,此时为野指针,如果再次引用编译的时候就会不可意料的错误而不出现错误提醒或警告。如果用二级指针则可以避免这种情况.此时,连主函数的head也被赋为null.一旦引用则会出现错误.