1. 程式人生 > >C++的常量指標和指標常量之間的區別

C++的常量指標和指標常量之間的區別

最近刷題遇到好多類似的題目,因此差了書,做個筆記。

常量指標:讓指標指向一個常量物件,這樣可以防止使用該指標來修改指向的值;eg.int age =22; const int * pt =&age;該宣告指出,pt指向一個const int(這裡為22),因此不能使用pt來修飾這個值。話句話說,*pt的值為const不能被修改,但允許pt重新指向別的物件。

*pt+=1;cin>>*pt;都是違法的

指標常量:指標本身宣告為常量,這樣可以防止改變指標指向的位置。eg.int age = 22;int * const pt =&age;pt只能指向age,但允許使用pt來修改age的值。

結合一下:

int age =22;

const int * const pt = &pt;pt只能指向age,而pt不能用來修改age的值。簡而言之pt和*pt都是const。

延伸一點:c++允許將const變數的地址賦給指向const的指標,但不允許將const的地址賦給常規指標。很好理解的,常量本身不允許改變,若賦給常規指標,使得變數的const狀態很荒謬,因此C+=禁止這樣做。如果非要這麼做,可以使用強制型別轉換來突破這種限制,不過這要參考運算子const_cast了,有時間在做記錄。