指標+1,是加乙個單元格還是加乙個位元組呢,
先看乙個程式:
#include int main()
; int *p = arr;
p++;//p = p + 1
*p = 10;
p++;
*p = 20;
printf("%d,%d\n",arr[0],arr[1]);
return 0;
}
這個程式通過編譯結果為 1 10,這個結果說明p++後,arr[1]的值被更換為10.
所以指標+1就是加乙個單元格,那為什麼會是加乙個單元格而不是乙個位元組呢?看乙個圖。
這個圖是假設p++加乙個位元組,p++,*p=10 的位址賦值後(紅色框),arr[0]=2561(藍色框),顯然這個值不是我們想要的結果。
所以指標+1,並非加乙個位元組,而是加乙個單元格。
下面有幾個題
指標的算術運算 +,-
指標+i,表示加i個單元格,其加 i * sizeof(指標本身去掉乙個 * )位元組
int main()
指標加1存在的可能及指標的算術運算
指標加1的三種可能 1.指標加1,加整個陣列 不太現實 2.指標加1,加乙個單元格 可以,常用 3.指標加1,加乙個位元組 太麻煩,但考試常出 舉例 小端 低位址,存放小資料 假如指標加1代表加乙個位元組的話 乙個單元代表4個位元組,首先將第一行每個單元格擴大四倍得到第二行 int p arr p ...
指標 陣列 加常數
includeint main int ptr1 int a 1 int ptr2 int int a 1 printf x n x n a 0 a 1 printf x x ptr1 1 ptr2 return 0 結果 22fef8 22fefc 4 2000000 通常x86機器採用的小段儲存...
Deque 加雙指標
樣例輸入 1 複製 8 l 1r 2 r 3?2l 4?1 l 5?1輸出 1 複製 112 輸入 2 複製 10 l 100 r 100000 r 123 l 101 123 l 10 r 115 100 r 110 115 輸出 2 複製 021 說明 提示 let s take a looka...