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

C++中指针转引用再转回指针,是否能保证得到原指针?

我的理解
  • 在C++中,普通值可以通过&value转换为指向自身的指针,或通过隐式转换得到自身的引用。
  • 与Rust不同,引用并非真正的一等类型,而只是部分类型声明位置可接受的一种二元限定符。引用可以被透明地当作其引用对象使用,隐藏内部指针¹。因此,我们可以直接使用&refToValue获取指向引用对象的指针。
问题

**若将指针转换为引用,再转回指针,是否能保证得到原始指针?**在Rust中情况确实如此,但Rust的引用是作为抽象指针的“常规”一等类型。

// Sample code by @chi
T x;
T* ptr1 = &x;
T& ref = *ptr1;
T* ptr2 = &ref;
assert(ptr1 == ptr2); // Is that always true according to the spec?

¹: 我知道C++标准并未要求引用必须以指针的方式实现,但我想不到除了特定上下文优化外的其他实现方式,尤其是如果最终问题的答案为“是”的话。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:11:04