指针的左值与右值

首先我们看一下什么是左值、右值。

(1)左值就是一个可被存储的单元,右值就是一个可被读取的数据。
    
(2)左值必须是一个被明确了的内存存储单元,可以用来被赋值;右值必须是一个能被读出来的确确实实的值,这个值可以是数据,可以是指针,可以是结构,反正只要能被读出来的,都可以定义为右值。

接下来我们先看如下代码:

int a = 112, b = 1;
int *d = &a;
b = *d;

问题来了,你能准确写出a  b  d  *d各自的值吗? 
d的值分为两种情况: 
d左值(当d出现在赋值符号左侧时):表达式 d 表示的是存储d这个指针变量本身的内存地址。 
d右值:表达式 d 表示的是存储变量a的内存地址。
*d的值也分为两种情况: 
*d左值:表达式 *d 表示的是存储变量a的内存地址。 
*d右值:表达式 *d 表示的是存储变量a的内存地址中的所存的值。

发布了35 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41078889/article/details/101099953