指標的運算

2021-08-18 06:50:06 字數 1119 閱讀 9587

#include

int main()

;int *p = arr;

*p = 10;

p++;

*p = 20;

printf("%d,%08x\n",arr[0],arr[1]);

return 0;

}指標+1的含義,首先思考一下指標+1可能的幾個含義:

(1)加整個陣列:這種含義不太符合實際,題中要的是遍歷陣列中的數。如果是加整個陣列,那就是直接跳過去並沒有意義。

(2)加乙個位元組:通過計算加乙個位元組是錯誤的,會使值發生改變,且計算複雜。

(3)加乙個單元格;符合實際的想法,上面程式中p++的意思是加乙個int型單元格

int main()

;//int *q = &arr[9];

for(int *q = &arr[9];q>=arr;q--)

int *p = &arr[7];

*p = 20;

p--;

*p = 30;

return 0;

指標-數字與指標+數字相同,需要調整,調整的權重為sizeof(指標去掉乙個*)。

int main()

;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",(short *)q-(short *)p);//結果為:16

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

printf("%d\n",(int ***)q-(int ***)p);//結果為:8

printf("%d\n",(char **)q-(char **)p);//結果為:8

printf("%d\n",(long)q-(long)p);//結果為:32

注意!最後乙個並沒有指標,只是單純的數字相減。

不可以!

指標的運算

指標運算 指標演算法並不依賴於指標的型別,如果p是乙個指向char的指標,那麼p 1就指向下乙個char 算術運算 指標的算數運算只限於兩種形式 指標運算只有用於陣列中其結果才是可以 的,對於任何並非指向陣列元素的指標執行算數運算其結果是非法的 1.指標 整數 結果也是指標 這種形式只能用於指向陣列...

指標的運算

指標的運算包括 1 指標的加法 2 指標的減法 char short int long long long float double 位元組數 1 2 2 4 4 8 4 8 int不加說明為4個位元組 對指標的加法而言 指標是不能加指標的 它只能加乙個數字 比如 指標 1 加乙個單元格 需要調整 ...

指標的運算

指標加法 指標 1 加乙個單元格 指標 數字 需要調整,調整的權重為sizeof 指標去掉乙個 指標全部為4個位元組 1級指標,2級指標。include int main 指標 數字 需要調整 include int main 指標 指標 1 算出位元組 2 除以調整的權重 include int ...