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

关于指针的const引用:为何可修改指针指向对象的值?

指针的const引用为何能修改指向对象的值?

你的代码里const auto &refOfPtr = ptr,auto会被推导为int*,所以refOfPtr的实际类型是int* const &——也就是指向int类型指针的const引用。

这里的const修饰的是指针本身,而非指针指向的对象,具体规则如下:

  • 你不能通过refOfPtr修改指针存储的地址,比如尝试执行refOfPtr = &another_int;会直接编译报错;
  • 但指针指向的对象(也就是代码里的n)本身是可修改的int类型,所以通过解引用*refOfPtr来修改对象的值是完全合法的。

举个反例验证指针地址的约束:

int m = 20;
refOfPtr = &m; // 编译错误:无法给const引用指向的指针重新赋值地址

这行代码会编译失败,证明指针的地址确实无法通过该const引用修改。而*refOfPtr = 10;是直接操作指针指向的int对象,不受const对指针本身的约束,因此能成功修改n的值。

简单总结:这个场景里的const只限制了“指针本身的地址不能被该引用修改”,并没有限制“指针指向的对象是否可修改”——只要对象本身是可修改的,解引用后就能更改它的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:13:10