对指针表达式左值右值的懂得

对指针表达式左值右值的理解左值即若其为右值时的值所在的地址。如:*p a;则*p为右值时,等于a;若*p为左值

对指针表达式左值右值的理解
左值即若其为右值时的值所在的地址。
如:*p = a;则*p为右值时,等于a;若*p为左值时,等于存储a的地址。

请问这样理解对吗?


[解决办法]
左右值是描述表达式属性的。 如果一个表达式的值它所在的语句结束后还能引用,说明它是一个左值,否则就为右值。 

一个简单的方法: 
如果可以对表达式使用&取址运算符,则这个表达式就是一个左值。 

C/C++ code
int a; &(a); // ok,所以a是一个左值&(a++); //ng,所以a++是以个右值
[解决办法]
这个差不多了。
探讨

*p 放在左边 和 右边 有什么区别么? 没搞懂你想问啥。

不管 放左边还是右边都是 取 指针p所指向的地址上的内容。

*p = a;表示 将 指针p所指向的地址上的内容 改写为 a的值。

a = *p;表示 将 a的值 改写为 指针p所指向的地址上的内容。