C++ 如何在内存中表示引用变量?

C++ 如何在内存中表示引用变量?,c++,pointers,c++11,reference,C++,Pointers,C++11,Reference,在内存表1或表2中,哪一个是参考变量的正确表示形式? 如果是表2,那么为什么指针是对象而引用不是 如果两种表述都不正确,请提供正确的表述,并解释为什么引用不是对象 在内存表1或表2中,哪一个是参考变量的正确表示形式 可能是,也可能两者都不是 在这种情况下,不需要存储对象的地址,因此表1就足够了。在另一个示例中,可能需要引用变量的地址。例如,当引用是非内联函数的参数时 请提供正确的陈述 C++标准N4140草案[DCL,REF]/4:< /P> 未指定引用是否需要存储 它的存储方式根本没有规定

在内存表1或表2中,哪一个是参考变量的正确表示形式?
如果是表2,那么为什么指针是对象而引用不是 如果两种表述都不正确,请提供正确的表述,并解释为什么引用不是对象

在内存表1或表2中,哪一个是参考变量的正确表示形式

可能是,也可能两者都不是

在这种情况下,不需要存储对象的地址,因此表1就足够了。在另一个示例中,可能需要引用变量的地址。例如,当引用是非内联函数的参数时

请提供正确的陈述

C++标准N4140草案[DCL,REF]/4:< /P> 未指定引用是否需要存储

它的存储方式根本没有规定

为什么引用不是对象的解释

同一文档将对象定义为

[简介对象]/1

。。。对象是一个存储区域


如果引用没有定义为具有存储,那么它就没有定义为对象。

引用变量的存储是未指定的。我认为这是一个很好的、写得很好的问题。OP不知道有什么更好的答案是无关紧要的。上面代码的问题是“表3:/nothing/”也是一个有效且现实的结果!
refNum
的使用通常会影响它的表示,因此这个问题是不完整的。我认为“将引用传递给非内联函数”案例也没有强制使用表示2。编译器必须知道
x1
或至少知道如何计算它,才能将其存储在
x2
中。但是如果它知道这一点,它也可以在直接在调用堆栈上按下
x1
时使用这一知识。@MSalters我也不这么认为。正如我所说,在这种情况下(为了清楚起见,我修改了措辞),需要引用变量的地址(正如您所说,存储在调用堆栈上)。如果地址已经存储在OP示例中的某个位置,则假定允许编译器重用它。
int num = 0;
int *ptrNum = &num;
int &refNum = num;