指针的左值与右值

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

(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的内存地址中的所存的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值