#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 ...