2-4 const徹底理解 c++ primer 精讀

int a1 = 123;
int a2 = 456;
//普通指針
int* p1 = &a1;
// 指針常量(p2的指針不可以指向別的,但是能改變他指向的東西的值)
// 思考方法:從右向左(從等號(hào)開(kāi)始),
// 等號(hào)左邊是p2,也就是一個(gè)指針變量,
// ??p2左邊是const,證明p2這個(gè)指針不能變,也就是指向不能變
// 再接著往左看,就是一個(gè)普通的int *,就證明他是個(gè)int類(lèi)型指針。
int* const p2 = &a1;
p2 = &a2; //錯(cuò)
*p2 = 789; //對(duì)
// 常量指針
// 思考方法:從右向左(從等號(hào)開(kāi)始),
// 等號(hào)左邊是p22,也就是一個(gè)指針變量,
// ??p22左邊是*,就是個(gè)普通的指針變量,可以指向別處
// 再接著往左看,是一個(gè)const,這時(shí)候不知道他修飾的是誰(shuí),
// 接著往左看,是一個(gè)int,證明const修飾的int,就是修飾的變量。就是指針指向的值不能變。
int const* p22 = &a1;
p22 = &a2;//對(duì)
*p22 = 789;//錯(cuò)
const int* p3 = &a1;
p3 = &a2;//對(duì)
*p3 = 7889;//錯(cuò)
const int* const p4 = &a1;
p4 = &a2;//錯(cuò)
*p4 = 890;//錯(cuò)
const int const* p5 = &a1;
p5 = &a2;//對(duì)
*p5 = 8990;//錯(cuò)
