对指针加一或者减一并不是简单的加减运算,而是以基类型数据所占有的字节数为步长的,例如下面:float a[10],*p;
p=&a[4];
既指针变量p指向了数组a中下标为4的元素。假如p=2000,那么p+1=2004而不是2001,且p+1指向的是a[5],p+3=2012,p+3指向的是a[7],p+3-p=12。
但是两个指向同一个数组的指针变量是可以进行大小比较的,两个指针相减,得到的数据是两个指针之间的元素个数。如果我将以上例子做如下改变
float a[10],*p,*q;
p=&a[4],q=&a[7];
那q-p=2(a[4]与a[7]之间有两个元素)
与第一个式子p+3-p=12矛盾!!!请高人指点我的理解哪里错了
ABOUTYOU
相关分类