(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