有什么办法可以找到参考地址?使其更具体:变量本身的地址,而不是初始化变量的地址。
3 回答
函数式编程
TA贡献1807条经验 获得超9个赞
引用没有自己的地址。尽管可以将引用实现为指针,但是并不需要或不能保证。
C ++常见问题说得最好:
与指针不同,一旦将引用绑定到对象,就不能将其“重新定位”到另一个对象。引用本身不是对象(它没有身份;使用引用的地址会为您提供引用对象的地址;请记住:引用是其引用对象)。
另请参阅我的答案,以获取有关引用与指针的不同之处的完整列表。
烙印99
TA贡献1829条经验 获得超13个赞
NO。无法获取引用的地址。
那是因为引用不是对象,它是别名(这意味着它是对象的另一个名称)。
int x = 5;
int& y = x;
std::cout << &x << " : " << &y << "\n";
这将打印出相同的地址。
这是因为“ y”只是对象“ x”的另一个名称(别名)。
明月笑刀无情
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会编译它,但是带有强烈的警告,结果程序被破坏了
- 3 回答
- 0 关注
- 763 浏览
添加回答
举报
0/150
提交
取消