指针+1(-1同理)
给定一个数组,数组指针+1可能表示为三种情况:
1.加一个字节 :程序出错
2.加整个数组:这个操作完全没意义。
3.加一个单元格:一个单元格几个字节是根据定义的指针的类型来定的,例如char,指针加1就是一个字节,即一个单元格。
总结:指针加法需要调整(加1单元格),调整的权重为指针去掉一个星号,然后求指针sizeof,例如
int*p; p+1为加4个字节=sizeof(int)
又例如 char**p; p+1为加4个字节=sizeof(char*),指针在32位的操作平台为4位。
指针-指针
int *p=arr;
int *q=&arr[5];
p+q // 非法,为一个未知的地址
q-p //合法,可以算出间隔的字节数,再除以权重,可以计算出间隔的单元格数。
例如:
int *p=arr[1]; int *q=arr[9];
即 (int*)q-(int*)p=8=32/4 //4为权重