指针运算

定义一个整形的指针*p指向整形数组arr,然后p++;这就有了疑问p++到底是加了什么?有以下几种猜想

1、加了整个数组长度?

2、加了一个字节长度?

3、加了4个字节长度?

1.第一个猜想明显是错的如果给p加一个整个数组的长度,p就会从数组前端跳到末尾这样毫无意义的。

2.整型数组中,每个元素需要4个字节来保存

3.很显然每次p++是加一格数组长度

以下这个程序来验证

指针运算_第1张图片

总结:指针与数字间的加法,需要进行调整,其调整权重为指针所指向的类型长度,如:其权重就为sizeof(int)

总的计算式为:指针+(数字*权重)。指针与数字之间的减法,与指针加法类似

接着讨论指针与指针之间的运算。

“指针+指针”,这个运算有意义吗?很显然是没有的,我们拿时间来作比喻,下午三点加下午四点得出来的值是7但七没有任何意义。指针之间并不存在加法运算。

“指针-指针”,指针之间的减法计算式为:(指针-指针)/权重

下面是指针运算的程序

指针+数字

指针运算_第2张图片

指针-指针

指针运算_第3张图片

你可能感兴趣的:(编程)