指针的运算

本文深入探讨了指针的加减运算原理,通过实例说明指针加1实际上是移动了一个元素的位置,而非简单的字节增加,并解释了指针减法、指针间的加减法等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针的运算

(指针运算时,需要考虑权重)

 

一:指针加数字

//1、指针+数字

//指针加法需要调整,调整的权重为sizeof(指针去掉一个*)

在我们学习中,经常会用到指针,不可避免的会遇到指针++的情况,今天我们就来研究一下这个指针+1到底加的是1个什么。

 

现在有三个可能:

1:加一个字节

2:加一个数组长度

3:加一个格子

 

现在我们一个一个来看

第一种情况:

放一个数据1进第一个格子(PC用的是小端,低地址放小数据)

 

我们将第一个格子和第二个格子放大来看

 

如果+1是+一个字节,我们放入第二个数据再看

 

此时,表示的数字完全改变。所以第一种情况排除。

 

第二种情况:

我们加一个数组长度

我们可以想到,此时数组越界了。所以第二种情况排除。

 

第三种情况:

我们加一个格子

 

这样看,指针+1时再解引用,存储的数据很清晰合理,得到的数字也是我们想要的。

所以第二种情况正确。

 

 

我们可以在vs2012中试验一下我们的结论。

 

 

结果和我们想的一致。

 

 

2:指针减数字

//2、指针-数字

//指针减法需要调整,调整的权重为sizeof(指针去掉一个*)

 

类似指针加法规则,+1/-1 都是一个格子

 

3:指针+指针

非法 不可用(例如5月20+5月15,比较抽象,表示不了什么)

 

4:指针-指针

可用(例如5月20-5月15,指的是5天)

指针-指针那表示是两个指针之间间隔的格子数。

因此,计算时应用相隔的字节/权重

调整的权重为sizeof(指针去掉一个*)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值