關於指標運算的學習心得!
阿新 • • 發佈:2018-12-17
①指標加指標:指標加指標非法,無意義。
②指標減指標:結果為間隔的單元格個數,可正可負。步驟如下: ⒈算出間隔的位元組數。 ⒉除以調整權重。 例:
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; }
總結:指標的算數運算都需要調整。