再學C/C++ 之 指標常量 和 常量指標

scutwang發表於2014-04-07

(1)指標常量,將指標的指向當成常量。即指標變數的值只能在定義的時候初始化,定義後不能修改,也就是說不能改變指標變數的指向。但是不影響所指物件的訪問特徵。其定義形式為:

型別 * const 指標
//型別是該指標所指物件的型別,*為指標型別說明符。

例項1:

int var1 = 100;
    int var2 = 200;

    //初始化指標常量,
    int *const const_P1 = &var1;
    //指標常量值定義指標的指向不能修改,
    //如,這裡將const_P1指向var2的地址,就錯了,
        //下面的語句會報錯
    const_P1 = &var2;
    //但是,指標常量不影響指標所指物件的訪問特徵,
    //即,這裡可以修改const_P1的物件的值
    *const_P1 = 200;

    //輸出200;
    cout << *const_P1 << endl;
    //輸出200;
    cout << var1 << endl;

 

(2)常量指標,又稱為指向常量的指標,意思是,將指標所指的物件當成一個常量,即其訪問特徵為常量,但是,指標的指向可變。定義的形式:

型別 const * 指標
或者
const 型別 * 指標
//型別是該指標所指物件的型別,*為指標型別說明符。

例項2:

    int var1 = 100;
    const int var2 = 200;

    const int * P1;
    const int * P2;
    P1 = &var1;
    //上面的語句將P1指向var2,就是將其訪問特性設定為常量,即不可修改,
    //所以下面的語句會報錯。
    *P1 = 1000;
    //常量指標不影響指標的指向,所以這裡可以重新指向var2
    P1 = &var2;

注意:a、常量指標,無論所指的物件是否為常量,均不能通過*p修改。

   b、為了保證標識常量的只讀性,常量的地址只能賦給常量指標(即指向常量的指標)。

 

(3)總結的來說,指標常量,就是把指標當成常量(指向不可變);常量指標,就是把所指物件當成常量。

 

如果讀者,對此還是記不住的話,可以參考這篇文章:http://www.cnblogs.com/jonnyyu/archive/2005/06/19/89766.html

相關文章