發新話題

C++ Gossip 進階型態 - 《指標》指標的運算

C++ Gossip 進階型態 - 《指標》指標的運算

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

指標的加法與減法與一般數值的加減法不同,在指標運算上加 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即是在記憶體位址上退後一個資料型態單位的長度。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。