From Gossip@caterpillar

C Gossip: 指標的運算

除了指定運算子=、取址運算子&與取值運算子*之外,還有+、-、++、--、+=與-=等運算子可以使用在指標上。

指標的加法與減法與一般數值的加減法不同,在指標運算上加 1 ,是表示前進一個資料型態的記憶體長度,例如在int型態的指標上加1,是表示在記憶體位址上前進4個位元組的長度,如以下的例子所示範的:
#include <stdio.h>

int main(void) {
int *ptr = 0;

printf("ptr 位置:%d\n", ptr);
printf("ptr + 1:%d\n", ptr + 1);
printf("ptr + 2:%d\n", ptr + 2);

return 0;
}

執行結果:
ptr 位置:0
ptr + 1:4
ptr + 2:8

這個記憶體位址的顯示單位是位元組;由於宣告的是int型態的指標,所以每加1就會前進4個位元組的長度,如果您宣告的是double型態的指標,則每加 1就會前進8個位元組,如以下的程式所示:
#include <stdio.h>

int main(void) {
double *ptr = 0;

printf("ptr 位置:%d\n", ptr);
printf("ptr + 1:%d\n", ptr + 1);
printf("ptr + 2:%d\n", ptr + 2);

return 0;

}

執行結果:
ptr 位置:0
ptr + 1:8
ptr + 2:16

以上所舉的例子為指標的加法,在減法上觀念也是相同,對指標減1即是在記憶體位址上退後一個資料型態單位的長度。