根据教科书。
运算符的地址(第2.3.2节,第52页)需要一个左值操作数并返回 指向其操作数作为右值的指针。
int a = 6,c=9;
int *x = &a; //Here x is a lvalue.
x = &c;
据我所知,如果我们可以赋值,那就是左值。那为什么教科书会说返回右值的地址。有人可以用外行人的语言解释一下吗
答案 0 :(得分:1)
课本上说&a
是右值。即值不能分配给&a
。
如果我们尝试编译以下代码,则会发生编译错误。
int a = 6,c=9;
int *x = &a; //Here x is a lvalue.
&a = x; // Compilation error, as '&a' is an rvalue
答案 1 :(得分:1)
据我所知我们可以分配
对于类类型,这不一定是正确的。但是它始终适用于示例中使用的指针。
那为什么教科书说返回右值的地址
好吧,您不能分配给它:
&a = &c; // ill formed because &a is rvalue
int *x = &a; // OK. Not an assignment
x = &c; // OK because x is lvalue