c++中指针为什么会被表示成“表达式不是可修改的左值”
时间: 2024-04-30 09:20:21 浏览: 106
把返回引用的函数作为“左值表达式”-vc6.0学习教程 PPT
C中的指针是一种特殊的变量类型,它存储了一个变量的内存地址。在C语言中,指针变量可以通过取地址运算符&获取变量地址,并可以通过解引用运算符*获取指针所指向的变量的值。
当一个指针作为左值时,它可以用来修改它所指向的内存中的值。例如,以下代码将指针p所指向的整数变量的值改为10:
```
int *p;
int a = 5;
p = &a;
*p = 10; // 修改p所指向的变量的值为10
```
但是,当一个指针作为右值时,它不能被修改。因为它只是一个内存地址的值,而不是一个实际的变量。例如,以下代码将无法编译,因为指针p作为右值出现在表达式中:
```
int *p;
int a = 5;
p = &a;
10 = *p; // 错误,无法修改指针p所指向的变量的值
```
因此,当一个指针作为右值出现在表达式中时,编译器会报错,提示“表达式不是可修改的左值”,以防止程序员错误地尝试修改一个指针所指向的内存地址。
阅读全文