定义一个整形的指针*p指向整形数组arr,然后p++;这就有了疑问p++到底是加了什么?有以下几种猜想
1、加了整个数组长度?
2、加了一个字节长度?
3、加了4个字节长度?
1.第一个猜想明显是错的如果给p加一个整个数组的长度,p就会从数组前端跳到末尾这样毫无意义的。
2.整型数组中,每个元素需要4个字节来保存
3.很显然每次p++是加一格数组长度
以下这个程序来验证
总结:指针与数字间的加法,需要进行调整,其调整权重为指针所指向的类型长度,如:其权重就为sizeof(int)
总的计算式为:指针+(数字*权重)。指针与数字之间的减法,与指针加法类似
接着讨论指针与指针之间的运算。
“指针+指针”,这个运算有意义吗?很显然是没有的,我们拿时间来作比喻,下午三点加下午四点得出来的值是7但七没有任何意义。指针之间并不存在加法运算。
“指针-指针”,指针之间的减法计算式为:(指针-指针)/权重
下面是指针运算的程序
指针+数字
指针-指针