①計算間隔的位元組數
②除以權重
以指標加數字為例:(指標減數字類似)
int *p1;
p1++; //加的值為sizeof(int),即加4位元組
p1+3; //加3個單元格,p1為int型4位元組,即加12個位元組
short *p2;
p2++; //加sizeof(short),加2位元組
是不是懂了呢?接下來多來點例子看看吧。(我們將陣列arr的首元素位址設為x)
int main()
; //設&arr[0]為x
int *p = &arr[1]; //x+4
int *q = &arr[7]; //x+28
printf("%d\n", p - q); //-6
printf("%d\n", q - p); //6
printf("%d\n", (short *)q - (short *)p); //12
printf("%d\n", (long long*)q - (long long *)p); //3
printf("%d\n", (double *)q - (double *)p); //3
printf("%d\n", (unsigned long)q - (unsigned long)p); //24
printf("%d\n", (char **)q - (char **)p); //6(去掉乙個*求sizeof任然是指標,所以除以4位元組)
return 0;
}
列印結果和你想的一樣嗎?
再來看看~
int main()
; for(int *p=&arr[9];p>=&arr[0];p--)
return 0;
}
來看看結果:
在做指標運算時一定要注意進製、是否需要調整以及需要調整的權重是多少。
c語言 指標 ,指標運算,陣列指標
可以看到,i1的記憶體位址與p1的值相同,而p1的位址又是在一塊單獨的記憶體位址儲存。而 就是解引用 解析並返回記憶體位址中儲存的值。比如我們要取上面p1指向記憶體的值就用以下方法來取。printf 取指標指向記憶體的值 p1 d n p1 指標運算 對指標進行算術運算。c語言中的陣列其實就是一塊連...
C和指標指標
變數的值就是分配給該變數的記憶體位置所儲存的數值。int a 112 int d a 指標d指向a,但是變數d表示變數a的位址,d表示a的內容。的優先順序高於 cp 設計3個步驟 1 操作符產生cp的乙份拷貝 2 操作符增加cp的值 3 在cp的拷貝上執行間接訪問操作 char ch a char ...
C語言指標 指標的運算
include int main void 執行這段 會出現錯誤嗎?如果出現錯誤,是什麼錯誤?分析 printf一種常規的用法就是printf please input a data 這種用法相信很多人都使用過,但是將這種用法分析一下,這樣的用法printf函式接收到的引數是乙個常量字串的首位址,然...