【发布时间】:2019-10-21 03:42:36
【问题描述】:
根据教科书。
地址运算符(第 2.3.2 节,第 52 页)需要一个左值操作数并返回 指向其操作数的指针作为右值。
int a = 6,c=9;
int *x = &a; //Here x is a lvalue.
x = &c;
据我所知,如果我们可以分配,它是左值。那为什么教科书上说返回右值的地址。谁能用外行语言解释一下
【问题讨论】:
-
它是你报价中所说的右值。您不能分配给
&的结果(例如&a = 5;是一个错误) -
它说
&a是一个右值。 -
@MM 是的!它应该是一个
-
您认为显示代码的哪一部分将某些内容分配给
&a,以支持您声称它是左值的说法?显示的代码没有将任何东西分配给&a,而是将&a分配给其他东西。这是一个很大的不同。 -
@problematicDude 在
&a中,&是运算符,a是操作数。由于a是左值,因此可以使用运算符&并返回分配给x的右值。然后,变量x可以被分配另一个值(如x = &c),因为它是一个左值。