const char*, char const*, char*const的區別

firedragonpzy發表於2012-08-13
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

摘自:[url]http://www.cnblogs.com/Flouse/archive/2008/08/14/constPointer.html[/url]

相關文章