c语言链表 关于指针参数调用问题

转自百度知道:

提问:

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);才对吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值