- 左值(lvalue):指代一个具名的内存位置,可以出现在赋值语句的左侧,意味着允许你对该内存位置进行修改。
- 右值(rvalue):指代一个临时值,它没有持久的内存地址,不能出现在赋值语句的左侧,也不能取地址操作。
int a = 10; // a是左值,它代表一个值内存位置
int *b = &a; // b是左值,它代表一个指针内存位置;&a是右值,它是表达式计算的临时结果
int c = *b; // c是左值,它代表一个变量内存位置;*p是左值,因为它解引用后的a是左值
对于变量到底是左值还是右值有一个技巧性的判断:当变量经过解引用
*
后得到的通常是「左值」,经过取地址&
后得到的通常是「右值」。
2
条评论 我要发表评论