指標的 const 位置決定是指標不可變還是內容不可變

JS 裡沒有指標,所以這條完全沒有對應物。在 C++ 裡,const 寫在 * 的哪一邊,鎖住的是不同的東西。

int a = 10;
int b = 20;
 
// ① 內容不可變(指向常數的指標,最常用)
const int* p1 = &a;
// *p1 = 30;          // ❌ 不能改 a 的值
p1 = &b;              // ✅ 可以改指向 b
 
// ② 指標本身不可變(最接近 JS 的 const variable)
int* const p2 = &a;
*p2 = 30;             // ✅ 可以修改 a 的值
// p2 = &b;           // ❌ 不能換指別人
 
// ③ 兩者皆不可變
const int* const p3 = &a;
寫法鎖住的是
const int* p指向的內容
int* const p指標本身
const int* const p兩者

記法:const 管的是它「右邊」那個東西——const 在 * 左邊就管到型別(內容),在 * 右邊就管到指標變數本身。

這條也解釋了為什麼 const 穿不過指標:一個 const 物件裡的 int* p 成員,拿到的是寫法 ②(指標不能換,內容照改),而不是寫法 ③——見 C++ 的 const 是深層不可變,JS 的 const 只防重新賦值。