C语言左值和右值


  左值可以标记一个存储的位置,右值可以指定一个值。
  L-value中的L指的是Location,表示可寻址。The "l" in lvalue can be though of as location
  R-value中的R指的是Read,表示可读。The "r" in rvalue can be thought of as "read" value.  
  
  个人感觉,左值就是可以提供一个确切的可操作的地址,比如前两个赋值语句,左值都是正确的,因为它提供了一个确定的地址,
  变量名其实是一个特殊的对地址的引用。第三条赋值语句错误,左值不正确,计算机计算a+24时会将结果存在某个地址,但是这对于我们是未知的,
  正如一个普通的整型常量是不可以作为左值的。那是一个不合法的地址.

int a;
int * p ;
a = 29;  //true 
*p = 30  //true
( a + 24) = 10 ; //false


你可能感兴趣的:(c,存储,语言)