c语言链表 关于指针参数调用问题
typedefintelemtype;typedefstructnode{elemtypedata;structnode*next;}snode,*linklist;谭浩...
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点了 都给了吧................................... 展开
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点了 都给了吧................................... 展开
4个回答
展开全部
我的理解是:
1、head是一个链表头指针(指针变量),指向了链表头。他在初始化链表时是用一个函数使head指向NULL,为了能在函数内改变外部变量的值,传参时要传递实参的地址,因为head是指针变量所以形参要声明为二级指针。
2、在查找时函数只要知道链表的表头地址就可以顺着链表一次查找。这函数内不需要该改变实参的值,所以只要传实参值的副本就可以了。实参head是一级指针,所以形参就声明为一级指针就可以了。如果也想初始化那样声明为二级指针也是可以的,但是完全没必要的。
ps: set_linklist(linklist &head);这个好像是要写成 set_linklist(&head);才对吧。
1、head是一个链表头指针(指针变量),指向了链表头。他在初始化链表时是用一个函数使head指向NULL,为了能在函数内改变外部变量的值,传参时要传递实参的地址,因为head是指针变量所以形参要声明为二级指针。
2、在查找时函数只要知道链表的表头地址就可以顺着链表一次查找。这函数内不需要该改变实参的值,所以只要传实参值的副本就可以了。实参head是一级指针,所以形参就声明为一级指针就可以了。如果也想初始化那样声明为二级指针也是可以的,但是完全没必要的。
ps: set_linklist(linklist &head);这个好像是要写成 set_linklist(&head);才对吧。
展开全部
其实很简单。。他之所以只穿一个一重指针进去是因为它最后会在return head;一般会是这样的情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好久没写C方面了 我接到&指的是引用 当你要更改这个传入变量时加,如果只是查找没有比较加&。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
此时查找的是指针,head是指针,他不是查找这个值,是查找这个指针。
追问
查找指针? 我想问您一下 就是&head 和head 什么区别?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询