左值是用来指明一个对象的表达式。最简单的左值就是变量名称。左值(lvalue)之所以称为“左”(以首字母为 L,代表 left),是因为一个左值表示一个对象,它可以出现在赋值运算符(assignment operator)的左边,例如“左表达式=右表达式”。
其他表达式(那些表示一个值但不指明一个对象的),被类似地称为右值(rvalue)。右值是可以出现在赋值运算符右边而不是左边的表达式。例如,常量和算术表达式。
从一个左值中必定可以解析出对应对象的地址,除非该对象是位字段(bit-field)或者被声明为寄存器存储类。生成左值的运算符包括下标运算符(subscript operator)[]和间接运算符(indirection operator)*,如下表所示(如果 array 已被声明为数组,而 ptr 被声明为指针变量)。
表达式 | 是左值吗 | |
---|---|---|
array[1] | 是;一个数组元素是一个具有位置的对象 | |
&array[1] | 否;此对象的位置,并非一个具有位置的对象 | |
ptr | 是;此指针变量是一个具有位詈的对象 | |
*ptr | 是;指针所指的地方是一个具有位置的对象 | |
ptr+1 | 否;此加法产生一个新的地址值,但不是一个对象 | |
*ptr+l | 否;此加法产生一个新的算术值,但不是一个对象 |
对象可以被声明为常量。在这种情况下,该对象就不能位于赋值运算的左边,尽管它是左值,如下面的例子所示:
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!