指標中的算數運算

2021-08-11 11:11:57 字數 1266 閱讀 4711

一、指標所佔的位元組

在x86 或者32位平台的指標4佔位元組。

在x64 或者64位平台的指標8佔位元組。

二、指標加法運算:(指標加法運算需要調整,調整的權重是指標本身去掉乙個*號,在求sizeof())

例1、int main()

三、指標減法運算 :(指標減法運算需要調整,調整的權重是指標本身去掉乙個*號,在求sizeof())

指標減法需要調整,調整的權重是指標本身去掉乙個*號,再求sizeof();

int main()

四、指標減指標運算   (指標-指標,合法,需要調整,1、算出兩個指標間隔的位元組數,2、除以調整的權重,調整的權重是指標本身去掉乙個*號,再求sizeof();)

int main()

;     

int *p = &arr[1];    //x+4

int *q = &arr[9];    // x+36

printf("%d\n",p-q);   // ((x+4)-(x+36))=-32   ,-32/4(int)=-8

printf("%d\n",q-p);   //  ((x+36)-(x+4))=32 ,32/4(int)=8

printf("%d\n",(short *)q-( short*)p);   //((x+36)-(x+4))=32 ,32/2(short)=16

printf("%d\n",(char **)q-(char **)p);  ///((x+36)-(x+4))=32 ,32/4(去掉乙個*號,任然為指標4位元組)=8

printf("%d\n",(double *)q-(double *)p);   //4

printf("%d\n",(long *)q-(long *)p);// 8

printf("%d\n",(char *)q-(char*)p);  //32

printf("%d\n",(long long)q-(long long)p)  // ((x+36)-(x+4))=32    (不是指標)

//printf("%d\n",(int *)q-(short *)p);   不同型別的指標不允許相減。

return 0;

}五、陣列與指標的聯絡與區別

*(arr+i)==arr[i]    //中括號自帶解引用

*(p+i)==p[i]      //i可為負值

不同點:

sizeof(p)==4    指標為4個位元組

sizeof(arr)==40

p++   對

arr++   錯

指標的算數運算

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 意思是加乙個單元格,我們知道指標是...

指標的算數運算

指標加法 指標 1 可能出現的情況 加整個陣列 加1個位元組 加1個單元格 討論第1種情況 加整個陣列無現實意義,不可取。討論第2種情況 int arr int p arr p 10 p p 20 printf d,d n arr 0 arr 1 整形陣列乙個單元格佔四個位元組,將10轉化成十六進製...