c – 引用变量存储在何处

前端之家收集整理的这篇文章主要介绍了c – 引用变量存储在何处前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Are references stored on the heap or stack?4个
我知道引用不占用任何内存,它将指向它引用的相同内存位置.
例如
int i=10;
int &r = a;

假设i指向存储器位置1000,因此在这种情况下,r也将指向存储器位置1000.
但是在C语言中,当我们声明一个变量时,它将在某个位置存储在内存中.
在这种情况下,r指向某个位置,但它应该存储在内存中的某个地方,作为仅在引用上使用const指针的内部表示.
提前致谢.

解决方法

这是未指明的,并且有充分的理由.真正的答案是:它取决于参考.它可以表示为普通指针,或者根本不存在.

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

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

那么它可能根本不会占用任何空间.编译器只会将r的所有用法视为x [1]的别名,并直接访问该int.请注意,此类别名样式引用也可以来自函数内联.

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

从理论上讲,其他选项也是可能的(例如查找表),但我不认为这些选项可供任何真实编译器使用.

猜你在找的C&C++相关文章