int* p vs int *pint* p 強調「p 是 int* 類型」,符合「類型在左」原則(C++ Core Guidelines 推薦)。int *p 強調「*p 是 int」,貼近 C 風格及聲明模仿使用語法。int* p,且每行僅聲明一個指針避免 int* p, q 誤以為 q 也是指針。| 聲明 | 含義 | 口訣 |
|---|---|---|
int* const p | 頂層 const:p 本身不可變(指針常量),可修改指向的值 | const 在 * 右邊,鎖定指針 |
const int* pint const* p | 底層 const:p 指向常量整數,不可通過 p 修改值,p 可指向別處 | const 在 * 左邊,鎖定值 |
const int* const p | 雙重 const:指針與指向值均不可變 | 左右都有 const |
const T* 或 const T& 表達只讀意圖。auto 推導配合 const 減少錯誤:auto p = &x; → int*;const auto p = &x; → int* const。