请问LNode* &L在C++函数参数中表示什么含义?
关于C++中
LinkList &(即LNode* &)的含义及用途 首先明确:LinkList是LNode*的别名,所以LinkList &L本质就是指针的引用,等价于LNode* &L。
你觉得直接传LinkList(普通指针)就够,这种情况只适用于不需要修改指针本身指向的场景:
- 比如函数只是遍历链表、修改节点内部的
data值,或是调整中间节点的next指针(但头指针本身的指向不变),这时候传普通指针完全没问题——因为虽然指针是值传递,但通过指针能直接访问到链表节点的内存空间,修改节点内容是有效的。
但如果你的函数需要修改指针本身的指向,就必须用指针的引用:
- 最典型的例子是链表的头插操作:假设原本的头指针
L是NULL,插入第一个节点时,需要让L指向这个新创建的节点。如果只传普通指针LinkList L,函数里操作的只是指针的副本,修改副本的指向根本不会影响外部的实参指针,外部的L还是NULL;而传指针的引用LinkList &L,函数里对L的修改会直接作用于外部的实参指针,外部的L就能正确指向新节点。 - 再比如删除链表的头节点,需要让头指针跳转到原头节点的下一个节点,这种场景下也必须传指针的引用,否则外部的头指针不会同步更新。
简单总结:
- 不需要改变指针本身的指向 → 传普通指针
LinkList L - 需要改变指针本身的指向 → 传指针的引用
LinkList &L
内容的提问来源于stack exchange,提问作者ZHAN LU
相关产品推荐
相关产品推荐

