xiatianzhang 发表于 2012-7-24 11:56:47

lcw_swust 发表于 2012-7-24 13:34:24

本帖最后由 lcw_swust 于 2012-7-24 13:38 编辑

百度上搜“node * &head”,有人回答了
楼主确定这个编译能通过?
KEIL下,node *改为 char *是通不过的,不知道node是怎么定义的?以及用的什么编译器?

xiatianzhang 发表于 2012-7-24 13:41:47

Gorgon_Meducer 发表于 2012-7-24 22:56:01

表明传入的是一个指针,而不是地址,你可以理解为是指向指针的指针……

linucos 发表于 2012-7-25 13:46:53

1. 引用是C++的语法,参数里的&代表的就是引用的意思,C没有引用的概念,Keil中的C编译器估计不行
引用变量的别名。
2. void Insert(node * &head,char keyWord,char newdata)的意思猜测:
Insert里会表头是否存在,如果不存在,则需要给表头赋值。第一次调用Insert的话,估计是传递了个空的head进来,如:
node* table_head = NULL;
Insert(table_head, 1, 1);第一次调用,函数会将table_head赋值的.
如果是void Insert(node *head,char keyWord,char newdata)
函数里给head赋值的话,只是在函数内部的head变量被改变了,外部的table_head并没有变化.
3. node*&head的意义等价于node**head
写成void Insert(node **head,char keyWord,char newdata),内部给head赋值为
(*head) = new node.

不知说的对不对,lz听懂没?
引用的目的是给外部传递进来的head指针赋值.

xiatianzhang 发表于 2012-7-25 15:53:55

Gorgon_Meducer 发表于 2012-7-27 23:39:44

linucos 发表于 2012-7-25 13:46 static/image/common/back.gif
1. 引用是C++的语法,参数里的&代表的就是引用的意思,C没有引用的概念,Keil中的C编译器估计不行
引用变量 ...

谢谢你的详细解答。
页: [1]
查看完整版本: 链表的问题。小弟初学不才。