1、指针加减数字是合法的
指针加减数字表示的意义是指针在数组中位置的移动
指针加减法规则
指针加减法需要调整,调整的权重是指针本身去掉一个*,再求sizeof()
eg:
int main()
{
//指针减数字
int *p = (int *)0x1010;//定义一个整型指针变量p赋值为16进制数0x1010
printf("%x\n",p-1);//100c 去掉一个*,属于int型,sizeof()是4,1010-4 = 100c(注意是16进制数)
printf("%x\n",p-2);//1008
printf("%x\n",(short *)p-2);//100c
printf("%x\n",(char *)p-2);//100e 强转成char类型的指针变量,去掉一个*后属于char型,sizeof()是1,1010-2
printf("%x\n",(double *)p-2);//1000
printf("%x\n",(float *)p-2);//1008
printf("%x\n",(long long)p-2);//100e 不是指针变量,所以不用求sizeof(),直接-2
printf("%x\n",(double **)p-2);//1008
printf("%x\n",(char **)p-2);//1008 去掉一个*,还属于指针变量,sizeof&#