指针差:指针减指针,
指针减指针,减去两个指针间的单元格个数,不是字节数,
指针减指针,存在正负,用来表示两指针间的地址大小,
指针减指针,需要进行调整,调整的权重为sizeof(指针去掉一个*)
计算方法:1、算出两个指针间的字节数;2、用字节数除以调整的权重
例题:
#include <stdio.h>
int main()
{
int arr[10] = {1}; //定义整形数组arr
int *p = &arr[1];//x+4 //定义指针p,存放数组arr[1]的值
int *q = &arr[9];//x+36 //定义指针q,存放数组arr[9]的值,计算两个指针间的字节数,x+36-x+4
printf("%d\n",p-q); //整型,四个字节大小,-32/4 ,-8
printf("%d\n",q-p); //整型,四个字节大小,32/4,8
printf("%d\n",(short *)q-(short *)p); //short 型两个字节大小,32/2,16
printf("%d\n",(double *)q-(double *)p); //double型,八个字节大小,32/8,4
printf("%d\n",(int ***)q-(int ***)p); //指针型,四个字节大小,32/4,8
printf("%d\n",(char **)q-(char **)p); //指针型,四个字节大小,32/4,8
printf("%d\n",(long)q-(long)p); //常量,一个字节大小,32/1,32
return 0;
}