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

(1)指針常量,將指針的指向當成常量。即指針變量的值只能在定義的時候初始化,定義後不能修改,也就是說不能改變指針變量的指向。可是不影響所指對象的訪問特徵。其定義形式爲:html

類型 * const 指針
//類型是該指針所指對象的類型,*爲指針類型說明符。

實例1:spa

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:code

    int var1 = 100;
    const int var2 = 200;

    const int * P1;
    const int * P2;
    P1 = &var1;
    //上面的語句將P1指向var2,就是將其訪問特性設置爲常量,即不可修改,
    //因此下面的語句會報錯。
    *P1 = 1000;
    //常量指針不影響指針的指向,因此這裏能夠從新指向var2
    P1 = &var2;

注意:a、常量指針,不管所指的對象是否爲常量,均不能經過*p修改。htm

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

 

(3)總結的來講,指針常量,就是把指針當成常量(指向不可變);常量指針,就是把所指對象當成常量。blog

 

若是讀者,對此仍是記不住的話,能夠參考這篇文章:http://www.cnblogs.com/jonnyyu/archive/2005/06/19/89766.htmlclass

相關文章
相關標籤/搜索