(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