C

xiaoxiao2025-09-27  175

①指针加指针:指针加指针非法,无意义。

②指针减指针:结果为间隔的单元格个数,可正可负。步骤如下: ⒈算出间隔的字节数。 ⒉除以调整权重。 例:

int main() { int arr[10] = {1}; int *p = &arr[1]; //x + 4 int *q = &arr[9]; //x + 36 printf("%d\n",p-q); //-8 printf("%d\n",q-p); //8 printf("%d\n",(double *)q-(double *)p); //4 printf("%d\n",(short *)q-(short *)p); //16 printf("%d\n",(char **)q-(char **)p); //8 printf("%d\n",(char *)q-(char *)p); //32 printf("%d\n",(long)q-(long)p); //32 return 0; }

③指针加减数字: ⒈指针加减一表示加或减一个指向的单元格。 ⒉指针加减需要调整,调整权重为sizeof(指针去掉*) 例:

int main() { int *p = (int *)1000; //*p = 10;//error printf("%d\n",p+4);//1016 printf("%d\n",(char *)p+4); //1004 printf("%d\n",(short *)p+4); //1008 printf("%d\n",(double*)p+4); //1032 printf("%d\n",(unsigned long*)p+4); //1016 printf("%d\n",(int ***)p+4); //1016 printf("%d\n",(longlong)p+4); //1004 return 0; }

总结:指针的算数运算都需要调整。

转载请注明原文地址: https://www.6miu.com/read-5036964.html

最新回复(0)