左值:能够出现在赋值符号左边的东西。
他表示一个特定的位置,即左值表示一块地址。
所以像:++i=10,i++=10, a+10=10....都是错误的。因为赋值号左边的东西不能表示一块地址。
arr[10]=10,因为arr[10]通过下标访问一块地址,所以他是正确的。
int a,b,*p;
p=&a;
*p=10; 指针p存储的是a的地址,当使用*p时,表示的是a的位置。
右值:能够出现在赋值符号右边的东西,表示一个数值。
当*p放到赋值号右边时表示的是p所指向空间的值。
所以 *p既可以当左值,也可以当右值。