&a[3]和&a[0]都是地址(指针值),你变换p1=&a[3]、p2=&a[0],则&a[3]-&a[0]=p1-p2,两个指针之差其实就是两个元素的下标之差。当我们定义p=&a[0]的时候,p+3就是&a[0+3],记得以前这样做过么?如果用星号解指针,*p是a[0],*(p+3)就是a[3]。
指针加减一个整数n,其地址增减是n倍所指向数据类型的长度。定义int* p,则p+1是增进1个int长度,定义double* p,则p+1是增进1个double长度,两者的1是不同长度的。因此,指针加减运算的结果是“倍数”。
[
本帖最后由 TonyDeng 于 2011-11-9 14:23 编辑 ]