指標加法
「指標+1」可能出現的情況:
加整個陣列
加1個位元組
加1個單元格
討論第1種情況:
加整個陣列無現實意義,不可取。
討論第2種情況:
int arr = ;
int *p = arr;
*p = 10;
p++;
*p = 20;
printf("%d,%d\n",arr[0],arr[1]);
整形陣列乙個單元格佔四個位元組,將10轉化成十六進製制為ox0000000a,存放進四個格仔裡
此時p指向第乙個位元組,由於小端存放小資料,存放後如圖所示
指標+1,p指向第二個位元組,將20轉化成十六進製制為ox00000014,存放進四個格仔裡
這時讀取arr[0]為前四個位元組,即ox140a,arr[1]為00000000,與所賦值不符。
討論第3種情況:
加乙個單元格的情況符合現實操作
int main()
;//x
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",(char ***)q-(char ***)p);//8
printf("%d\n",(short *)q-(short *)p);//16
printf("%d\n",(double *)q-(double *)p);//4
printf("%d\n",(char *)q-(char *)p);//32
printf("%d\n",(long )q-(long)p);//32
return 0;
總結 :指標算數運算(模擬日期)
指標 + i :加 i 個單元格,加 i * sizeof(去掉乙個 * )個位元組。
指標 + 指標 :沒有意義,非法。
指標 - 指標 :間隔的單元個數(可正可負)1、算出位元組數,2、除以sizeof(指標去掉乙個*)
指標的算數運算
1.位元組數 char short int float double long longlong 位元組數 1 2 4 4 8 4 8 2.指標 1,計算指標 1具體加幾個位元組的方法是,給指標去掉乙個型號,讓後用sizeof 求出位元組大小 int p 整形指標變數 p 1,加4位元組 sizeo...
指標的算數運算
我們知道指標也是一種變數,既然是變數理論上便可進行算數運算,今天我們來一起 一下指標的算術運算。printf d,d n 0xa,0x0000000a int arr 10 int p arr p 10 p 大家看一下這串 思考一下這裡面的p 是加的什麼呢?這個p 意思是加乙個單元格,我們知道指標是...
指標中的算數運算
一 指標所佔的位元組 在x86 或者32位平台的指標4佔位元組。在x64 或者64位平台的指標8佔位元組。二 指標加法運算 指標加法運算需要調整,調整的權重是指標本身去掉乙個 號,在求sizeof 例1 int main 三 指標減法運算 指標減法運算需要調整,調整的權重是指標本身去掉乙個 號,在求...