1. 程式人生 > >c++primer 第五版 指向常量的指標和常量指標

c++primer 第五版 指向常量的指標和常量指標

c++ primer中對於“常量指標”的定義和網上的版本相反,而且刪去了"指標常量"的概念,引入了一個新的概念——"指向常量的指標”,但各種型別的含義還是一致的,只是叫法不一樣了。舉例:

int a;
const int *p = &a;
//與int const* p = &a等效,只取決於*和const的相對位置
表示的是“指向常量的指標”,普遍的叫法是“常量指標”。

這是指標p指向的物件是一個整型常量,指向的物件是不可以改變的,但對指標p本身並沒有限制,p的值可以改變,也就是可以指向新的物件。

修改:上一句“指向的物件是不可以改變的”這句話有失偏頗,“指向常量的指標,不過是指標‘自以為是’罷了,它們覺得自己指向了常量,僅僅要求不能通過該指標改變物件的值,而沒有規定那個物件的值不能通過其他途徑改變。”(同樣適用於常量引用)

int a = 0;
int *const p = &a;
按照c++primer 第五版的定義,p是一個“常量指標”,這裡與網上普遍的說法也不一樣,那裡叫“指標常量”。

const緊挨著p表示p的值不可改變,即p始終指向a。但是指向的物件的值能否改變依賴於物件本身的型別,這裡的a非常量,a的值是可以改變的。