閱讀891 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go ObjextARX-VS2005-字符串轉換
  下一篇:go 如何使用Log4j