最近在看的C++代碼中,經常出現帶const關鍵字的指針聲明,由于const的位置多變,非常容易混淆。在弄清楚後,寫下此部落格記錄一下,也個還沒有弄明白的同仁一個參考。
先來看一下下面幾種寫法:
const int v;
int const v;
const int *p;
int const *p;
int * const p;
const int * const p;
int const * const p;
如孔乙己的茴字的四種寫法一樣令人讨厭對吧?
其實,區分它們的方法很簡單:從右往左看。
const int v; // v是一個int型的變量,并且是常量 ---> v是一個整型常量
int const v; // v是一個常量,并且是int型變量 ---> v是一個整型常量
const int *p; // p是一個指針,它指向const int ---> p是一個指向整型常量的指針
int const *p; // 同上
int * const p; // p是一個常量指針,且是指向整型 ---> p是一個指向整型的常量指針
const int * const p; // p是一個常量指針,且指向整型常量 ---> p是一個指向整型常量的常量指針
int const * const p; // 同上
希望這篇部落格解答了你的疑惑,如果有還有疑問,不妨留下評論!