我混淆了-l值和r值。
考虑一下代码
int x; x=5;
具有
内景x
内存空间是为int变量保留的然后,将值5指定给它。
我的问题是
声明的意思是x是l值?
如果x的内存中有地址0xyyyy,&x引用这个地址。这个地址是0xyyy吗
l值,即e&x是l值?但是,var的地址是指针,所以,然后,l-value
变成指针变量?

最佳答案

据我所知,左值只是可以指定给的表达式的一个花哨的术语。换句话说,如果某个东西可以出现在=运算符的左侧,那么它就是左值。这意味着x是左值,但&x不是-不能将x的地址重新分配给其他值。
如果你有一个类似于int* getIntPtr()的函数,那么getIntPtr()不是左值(写getIntPtr() = 5没有任何意义),但是*(getIntPtr())是。
编辑:显然,这并不那么容易。如果x被定义为const,x仍然是一个左值(称为不可修改的左值),即使您不能为它赋值。我不确定是否还有其他例外。

关于c - C中的左值查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7216641/

10-11 17:51