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

指针引用与间接寻址:如何正确设置函数中的指针变量

问题解决:指针间接寻址的正确写法

首先明确核心逻辑:你传入的const Node* node本身就已经是指向目标Node对象(也就是a1)的指针,不需要额外取地址操作。你之前的错误在于混淆了「指针变量本身的地址」和「指针指向的对象的地址」。

正确写法分两种场景:

场景1:不需要修改指向的Node对象

直接将参数node赋值给cur即可,保持const限定以符合参数的只读要求:

int loop(const Node* node) {
  // cur 和 node 指向同一个Node对象(a1的地址),且无法修改该对象
  const Node* cur = node;
  // 后续可以正常访问cur的成员,比如 cur->data
  ...
}

场景2:需要修改指向的Node对象

如果你的逻辑需要修改Node对象的内容,那首先要调整loop函数的参数类型(因为const Node*限定了只读),改为非const指针后直接赋值:

// 调整参数为非const的Node*
int loop(Node* node) {
  Node* cur = node;
  // 现在可以修改cur指向的对象成员,比如 cur->next = nullptr;
  ...
}

为什么之前的写法错误?

Node* cur = &node这行代码中,&node取的是函数参数node这个指针变量自身在栈上的地址,它的类型是const Node**,赋值给Node*属于类型不匹配,而且逻辑上完全偏离了你想要指向a1的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:17:14