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   **也是一個指向指針的指針,那個指針又指向一個字符串變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章