解除引用的指针是否是有效的左值?

19 c pointers lvalue

假设定义:

int i  = 10;
int *p = &i;
Run Code Online (Sandbox Code Playgroud)

为什么*pa有效左值:

*p+=10; 
Run Code Online (Sandbox Code Playgroud)

不应该*p计算存储在&i的int的值,即.10,因此生成"非左值"错误?

Sie*_*geX 13

左值是指存储的区域能够被操纵的表达式.

*p是这样一种表达,指的是一个存储区域.这与说法不同,10+=10;因为10不像变量那样引用存储区域.

  • 10是表达式.这不是一个左值. (2认同)