我剛開始學習的理念,以「不變」,在C++和我遇到了一個問題:恆指針的整型
int d=0;
const int* const pt = &d;
d = 3;
cout << *pt << endl;
該腳本給出了「3」的輸出。 指針pt的定義應該解釋爲「一個常量int的常量指針pt」(至少我相信是這樣)。但是,當我改變d的值時,pt指向的int值也發生了變化,那麼它怎麼可能是一個「指向常量int的常量指針」?
非常感謝。
我剛開始學習的理念,以「不變」,在C++和我遇到了一個問題:恆指針的整型
int d=0;
const int* const pt = &d;
d = 3;
cout << *pt << endl;
該腳本給出了「3」的輸出。 指針pt的定義應該解釋爲「一個常量int的常量指針pt」(至少我相信是這樣)。但是,當我改變d的值時,pt指向的int值也發生了變化,那麼它怎麼可能是一個「指向常量int的常量指針」?
非常感謝。
指向const的指針並不意味着目標不能改變,這意味着你不能通過該指針修改目標。
由於該指針指向的內容不是const,因此可以更改。
沒有指針pt
,你有
int d=0;
d=3;
這要是罰款。
如果聲明d const的,你不能改變它:
const int d=0;
d=3; //ERROR
指針pt
不會改變什麼可以做d
。 const
是一個承諾:我不會改變這一點,但別的可能。
非常感謝,解釋。 – penpen926