天天看點

const指針與指向常量的指針

最近在看的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;   // 同上
           
希望這篇部落格解答了你的疑惑,如果有還有疑問,不妨留下評論!

繼續閱讀