我混淆了-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/