首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提述的地址

提述的地址
EN

Stack Overflow用户
提问于 2014-05-30 16:21:17
回答 5查看 316关注 0票数 1

所以我正在和一个朋友讨论关于参考和指点的问题。

我们讨论的是“您可以获取指针的地址,但不能获取引用的地址”。

在这一点上我不同意。让我们举一个例子:

代码语言:javascript
复制
int x = 0;
int &xRef = x;
cout << &xRef << &x <<endl;

这个例子显示了相同的地址,但是我从不减少通过执行xRef来获取&xRef的地址。你难道不认为我们有两个变量有相同的地址,所以即使我取引用的地址,它仍然是引用的地址(即使那是x的地址)?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-05-30 16:37:16

一元运算符&返回指定对象的地址。引用不是对象。它是对对象的引用。所以这句话

代码语言:javascript
复制
cout << &xRef << &x <<endl;

在这两种情况下,输出x的指定对象的地址。即使编译器可以为引用分配内存,引用本身没有地址,也就是说,不能应用运算符来获取它的地址。具有地址的引用引用的对象(或函数)。

票数 4
EN

Stack Overflow用户

发布于 2014-05-30 16:26:04

C++标准n3337 § 8.3.2/4

未具体说明引用是否需要存储(3.7)。

因此,未指定引用是否具有存储空间。很可能不是。只是化名而已。当您在代码中使用它时,如下所示,特殊操作是由编译器执行的,它可能会执行一些类似于指针操作的操作。

票数 9
EN

Stack Overflow用户

发布于 2014-05-30 16:26:23

您可以将引用看作对象的别名。因此,在您的示例中,&xRef声明了xRef,这是 x的另一个名称。因此,您打印两倍于同一对象的入口。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23959119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档