为了账号安全,请及时绑定邮箱和手机立即绑定

有什么办法可以找到参考地址?

有什么办法可以找到参考地址?

C++
绝地无双 2019-10-08 15:55:17
有什么办法可以找到参考地址?使其更具体:变量本身的地址,而不是初始化变量的地址。
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

引用没有自己的地址。尽管可以将引用实现为指针,但是并不需要或不能保证。


C ++常见问题说得最好:


与指针不同,一旦将引用绑定到对象,就不能将其“重新定位”到另一个对象。引用本身不是对象(它没有身份;使用引用的地址会为您提供引用对象的地址;请记住:引用是其引用对象)。


另请参阅我的答案,以获取有关引用与指针的不同之处的完整列表。



查看完整回答
反对 回复 2019-10-08
?
烙印99

TA贡献1829条经验 获得超13个赞

NO。无法获取引用的地址。

那是因为引用不是对象,它是别名(这意味着它是对象的另一个名称)。


int  x = 5;

int& y = x;


std::cout << &x << " : " << &y << "\n";

这将打印出相同的地址。

这是因为“ y”只是对象“ x”的另一个名称(别名)。


查看完整回答
反对 回复 2019-10-08
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

ISO标准说得最好:


不应有对引用的引用,也不应有引用数组,也不能有指向引用的指针。


我不喜欢很多人在这里使用的逻辑,因为您不能将引用“保证无论如何都只是一个指针”,所以您不能这样做。正如int x可能只是一个没有地址的处理器寄存器,但在& x使用时神奇地成为一个内存位置一样,编译器仍然可能允许您想要的内容。


过去,许多编译器的确可以完全满足您的要求,例如


int x, y;

int &r = x;

&r = &y; // use address as an lvalue; assign a new referent

我刚刚检查了一下,GCC会编译它,但是带有强烈的警告,结果程序被破坏了


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 763 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信