gpt4 book ai didi

c++ - 引用变量存储在哪里

转载 作者:行者123 更新时间:2023-12-02 10:58:24 25 4
gpt4 key购买 nike

我知道引用不会占用任何内存,它会指向它所引用的同一内存位置。例如

int i=10;
int &r = a;

假设i指向内存位置 1000,因此在本例中 r也将指向内存位置 1000。但在 C++ 中,每当我们声明一个变量时,它都会存储在内存中的某个位置。在这种情况下r指向某个位置,但它应该通过某种内部表示存储在内存中的某个位置。提前致谢。

最佳答案

这一点没有具体说明,并且有充分的理由。真正的答案是:这取决于引用。它可以表示为普通指针,也可能根本不存在。

如果您有一个具有自动存储持续时间的函数本地引用,例如此 r:

void foo()
{
int x[4] = {0, 1, 2, 3};
int &r = x[1];
// more code
}

那么它可能根本不会占用任何空间。编译器将简单地将 r 的所有使用视为 x[1] 的别名,并直接访问该 int。请注意,这种别名样式的引用也可以由函数内联产生。

另一方面,如果引用是“持久的”或对其他翻译单元(例如数据成员或全局变量)可见,则它必须占用一些空间并存储在某处。在这种情况下,它很可能被表示为一个指针,并且使用它的代码将被编译以取消引用该指针。

理论上,其他选项也是可能的(例如查找表),但我认为任何现实世界的编译器都不会使用这些选项。

关于c++ - 引用变量存储在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37719944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com