【问题标题】:How References in cpp have same memory address? [duplicate]cpp中的引用如何具有相同的内存地址? [复制]
【发布时间】:2017-10-25 13:26:16
【问题描述】:

我遇到了以下声明。两件事怎么可能驻留在同一个地址,即实际变量和引用变量具有相同的内存地址?

不管引用是如何实现的,引用都有相同的 内存地址作为它引用的项目。

【问题讨论】:

  • 引用根本没有地址。
  • 引用不是对象,没有内存或大小,你不能std::memcpy他们。每当您尝试做任何这些事情时,您都会获得它们引用的对象的特征。其他人可以为此挖掘标准报价。
  • 引用只是现有对象的另一个名称。就这样。因此,当您获取地址时,您正在获取对象的地址。当然每次都是一样的。

标签: c++


【解决方案1】:

这是因为引用不是“事物”:它是对象(可能是变量)的替代名称。
它没有地址:试图获取引用的地址只会给你它别名的对象的地址。

这句话具有误导性。

【讨论】:

  • “事物”是一个规范术语吗:P
  • @StoryTeller 这可能是一个有趣的标准提案,但我只是在回忆 OP 的句子 ;)
【解决方案2】:

这意味着引用的实现是编译器的实现细节。您无法使用运算符的& 地址获取引用变量的地址。它总是产生被引用实例的地址。

【讨论】:

    【解决方案3】:

    这意味着如果您获取引用变量的地址(使用&),它将与获取引用变量的地址时相同。这就是引用的全部目的,它们与它们“指向”的东西相同。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2012-08-06
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多