上一篇说了在指针运算时,指针加数字合法,指针加指针不合法,指针减指针合法。
指针剪指针计算方法是两个指针间隔的字节数再除以调整的权重。
如:
int arr[10]={0};
int *p=&arr[1];
int *q=&arr[9];
printf("%d\n",p-q);//-(4*8)/4=-8
printf("%d\n",q-p);//32/4=8
printf("%d\n",(short*)q-(short*)p);//32/2=16
printf("%d\n",(char*)q-(char*)p);//32/1=32
printf("%d\n",(double*)q-(double*)p);//32/8=4
printf("%d\n",(long*)q-(long*)p);//32/4=8
printf("%d\n",(char**)q-(char**)p);//32/4=8
printf("%d\n",(longlong)q-(longlong)p);//32
注:不同类型指针不能加减。