指標的運算


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

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

#include <iostream> 
using namespace std;

int main() {
int *ptr = 0;

cout << "ptr位置:" << ptr
<< endl;
cout << "ptr+1:" << ptr+1
<< endl;
cout << "ptr+2:" << ptr+2
<< endl;

return 0;
}

執行結果:
ptr位置:0
ptr+1:0x4
ptr+2:0x8

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

#include <iostream> 
using namespace std;

int main() {
double *ptr = 0;

cout << "ptr位置:" << ptr
<< endl;
cout << "ptr+1:" << ptr+1
<< endl;
cout << "ptr+2:" << ptr+2
<< endl;

return 0;
}

執行結果:
ptr位置:0
ptr+1:0x8
ptr+2:0x10

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