c – 引用变量存储在何处
发布时间:2020-12-16 05:00:07 所属栏目:百科 来源:网络整理
导读:参见英文答案 Are references stored on the heap or stack?4个 我知道引用不占用任何内存,它将指向它引用的相同内存位置. 例如 int i=10;int r = a; 假设i指向存储器位置1000,因此在这种情况下,r也将指向存储器位置1000. 但是在C语言中,当我们声明一个变量
参见英文答案 >
Are references stored on the heap or stack?4个
我知道引用不占用任何内存,它将指向它引用的相同内存位置. 例如 int i=10; int &r = a; 假设i指向存储器位置1000,因此在这种情况下,r也将指向存储器位置1000. 解决方法
这是未指明的,并且有充分的理由.真正的答案是:它取决于参考.它可以表示为普通指针,或者根本不存在.
如果您有一个具有自动存储持续时间的函数本地引用,例如此r: void foo() { int x[4] = {0,1,2,3}; int &r = x[1]; // more code } 那么它可能根本不会占用任何空间.编译器只会将r的所有用法视为x [1]的别名,并直接访问该int.请注意,此类别名样式引用也可以来自函数内联. 另一方面,如果引用是“持久的”或对其他转换单元(例如数据成员或全局变量)可见,则它必须占用一些空间并存储在某处.在这种情况下,它很可能被表示为一个指针,使用它的代码将被编译为取消引用该指针. 从理论上讲,其他选项也是可能的(例如查找表),但我不认为这些选项可供任何真实编译器使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |