指针的运算
(指针运算时,需要考虑权重)
一:指针加数字
//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(指针去掉一个*)