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

C++链表函数声明中node* &head的指针相关语法含义是什么

node* &head 含义说明

语法本质

这是C++中的指向node类的指针的引用,可以从右向左拆分理解:

  • 紧邻变量名的&表示head是一个引用变量
  • 前面的node*表示该引用绑定的对象类型是node类的指针

说白了就是给外部传入的原头指针起了个别名,函数内对head的修改都会直接作用到外部的原指针上。

和普通指针参数的区别

如果函数参数写成node* head,属于值传递:函数拿到的是外部头指针的拷贝,修改这个拷贝本身(比如让它指向新节点)不会影响外部的原指针。这种写法在插入空链表的第一个节点时会直接出bug——函数内已经把head指向了新节点,但外部的head还是nullptr。

用node* &head这种引用传递的写法,就完全规避了这个问题:空链表插入第一个节点时,直接给head赋值新节点地址就行,外部的原头指针会同步更新。如果是C语言没有引用语法的场景,等价的写法是二级指针node** head,只是C++的指针引用省略了额外的解引用操作,写法更简洁。

调用示例

node* head = nullptr;
// 直接传入head即可,不需要额外取地址或者接返回值
insertAtTail(head, 10);
// 调用完成后head已经指向第一个值为10的节点

内容的提问来源于stack exchange,提问作者Joseph Braganza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:07