c - 取消引用的指针是有效的左值吗?

标签 c pointers lvalue

假设定义:

int i  = 10;
int *p = &i;

为什么 *p 在这里是一个有效的左值:

*p+=10; 

不应该 *p 评估存储在 &i 的 int 值,即。 10,并因此产生“不是左值”错误?

最佳答案

An lvalue is an expression that refers to a region of storage that can be manipulated.

*p 就是这样一个表示存储区域的表达式。这与 10+=10; 不同,因为 10 不像变量那样引用存储区域。

关于c - 取消引用的指针是有效的左值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773839/

相关文章:

c++ - 表达式 `new T` 的计算结果是右值还是左值?

c - Visual Studio 2010 运行时检查失败 #3

c - 我的消息队列在哪里产生段错误?

c - OpenCL 数据传输何时发生?

c - 我无法理解结构指针和 XOR 的这种行为

c++ - 指向动态容器的指针是否持续存在?

c - C 中的方法重载

c++ - reinterpret_cast 不会改变指针的值是真的吗?

c++ - 模板非类型参数+左值/右值

c++ - 为什么 const 函数返回左值而不是右值?