You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请问LNode* &L在C++函数参数中表示什么含义?

首先明确: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:35:33