转自百度知道:
提问:
typedef int elemtype; typedef struct node { elemtype data ; struct node * next; } snode,*linklist; 谭浩强的那本书上 这么写的: 关于建立空表 void set_linklist(linklist *head_pointer) { *head_pointer==NULL; } 调用时 : set_linklist(linklist &head); 关于查找元素: linklist location_linklist(linklist head,elemtype x ) { 省略了,与问题无关。......... } 调用时: location_linklist(head,x); 我就不明白为什么查找调用时 , head 前面为什么没有地址符号& 呢? ?? 我知道head_pointer 是二级指针, head 是一级指针 。 但是具体的细节不明白 ,求高手指点一下 在下不胜感激!!! 由于是新手 也没那么多财富,就生10点了 都给了吧...................................
回答:
我的理解是: 1、head是一个链表头指针(指针变量),指向了链表头。他在初始化链表时是用一个函数使head指向NULL,为了能在函数内改变外部变量的值,传参时要传递实参的地址,因为head是指针变量所以形参要声明为二级指针。 2、在查找时函数只要知道链表的表头地址就可以顺着链表一次查找。这函数内不需要该改变实参的值,所以只要传实参值的副本就可以了。实参head是一级指针,所以形参就声明为一级指针就可以了。如果也想初始化那样声明为二级指针也是可以的,但是完全没必要的。 ps: set_linklist(linklist &head);这个好像是要写成 set_linklist(&head);才对吧。