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

C++中指针引用工作原理:修改temp->next是否会同步改变head的next?

结论

先明确前提:你给出的代码片段中Node* head仅声明未初始化,如果实际运行时head是未指向合法对象的野指针,那么执行temp->next=p属于访问非法内存,是未定义行为,程序可能崩溃、可能返回随机值,不存在确定结果。

如果head已经提前初始化,指向了一个合法的Node实例,那么答案如下:

  • head的next成员会同步改变
  • head->next的值等于指针p存储的地址,也就是你通过new Node(2)创建的Node对象的内存地址

原理

指针的本质是存储内存地址的变量,Node* temp=head执行的是地址拷贝:temp和head是两个独立的指针变量,但它们存储的地址完全相同,指向同一个Node实例。
此时通过temp修改指向对象的next属性,本质修改的是这个公共Node实例的成员,通过head访问同一个实例的next属性,自然拿到的是修改后的结果。


内容的提问来源于stack exchange,提问作者Himanshu Ranjan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:02