引用变量是否占用堆栈内存?

时间:2016-04-16 17:51:44

标签: c++ c++11

int main()
{
   int a=45;
   int& re=a;
   cout << &a << endl;
   cout << &re << endl;
   return 0;
}

 Output :
   0x61ff18
   0x61ff18

当我打印两个变量的地址相同时,是否意味着引用变量不占用堆栈中的内存?

2 个答案:

答案 0 :(得分:2)

C ++中引用的地址运算符给出了引用对象的地址 - 而不是引用变量本身的地址。按C ++规范。

因此,您会看到相同的值。

答案 1 :(得分:2)

&获取引用对象的地址,而不是引用本身的地址,因此&a&re的输出相同。在典型的实现中,引用本身确实需要内存,除非被优化掉。请参阅您的实现文档及其汇编输出(GCC和clang的-S标志)。语言规范不保证。