引用变量的内存地址

gur*_*der 3 c++

可能重复:
有没有办法找到参考的地址?

当我们打印实际变量和引用变量的地址时,它显示相同的地址为什么?

Mic*_*urr 10

引用是另一个变量的别名 - 它只是分配给引用的东西的另一个名称.

在幕后,编译器可能会使用指针机制来实现它,但是如果知道有关别名的东西和引用的生命周期,那么编译器就可以省去


Ham*_*ari 6

因为它们都指向相同的内存位置.这基本上是通过引用传递的全部内容.不是传递(复制)变量的实际值,而是为了性能(和内存使用)原因发送它的地址.

引用有点像指针,但它们更安全,并且在几个方面与指针不同.有关更多信息,请查看此页面.

  • @gurwinder:你的老师不知道他们在谈论什么.告诉他他正在假设一个实现细节,而C++是一种语言,而不是一种实现.所需要的只是标准所说的,你不能保证参考*甚至有存储*.(参见§8.3.2/ 3:"未指明引用是否需要存储".)因此,通过说"它必须存储在某个地方",你的老师无可争辩地错了; 它可能不会.@delnan:它可能会也可能不会,标准不需要任何东西. (2认同)

Chu*_*dad 5

知道如下:

$ 8.3.2/3 - "未指明参考文献是否需要存储(3.7)."

  • @StephaneRolland这意味着,例如,如果编译器发现引用的变量在寄存器中的整个生命周期中存在,它将永远不会在寻址的内存中. (3认同)