const char*, char const*, char*const的區別
const char*, char const*, char*const的區別問題幾乎是C++麵試中每次都會有的題目。 這個知識易混點之前是看過了,今天做Linux上寫GTK程序時又出現個Warning,發散一下又想到這個問題,於是翻起來重嚼一下。事實上這個概念誰都有隻是三種聲明方式非常相似:
Bjarne在他的The C++ Programming Language裏麵給出過一個助記的方法:
把一個聲明從右向左讀。
char * const cp; // * 讀成 pointer to //cp is a const pointer to char const char * p; //p is a pointer to const char; char const * p;
同上因為C++裏麵沒有const*的運算符,所以const隻能屬於前麵的類型。
C++標準規定,const關鍵字放在類型或變量名之前等價的。
const int n=5; //same as below int const m=10
結論:
char * const cp //定義一個指向字符的指針常數,即const指針 const char* p //定義一個指向字符常數的指針 char const* p //等同於const char* p const char //**是一個指向指針的指針,那個指針又指向一個字符串常量。 char //**也是一個指向指針的指針,那個指針又指向一個字符串變量。
最後更新:2017-04-03 08:26:17