2014-04-15 51 views
0

這應該是一個非常簡單的問題。我正在刷我的C,並想確保我正確理解const指針。關於const指針的快速說明

說我有一個功能static void penv(const char * const * envp);我認爲這是因爲「penv將指針envp指向const char指針」。它是否正確?

+1

是的,這是正確的 – thumbmunkeys

+0

我的建議是一個直接使用'const'指針無效。而是寫typedef,比如'typedef const char * LPCSTR;'。乍一看,什麼是常量,什麼不是常量。代碼的清晰度通常是最重要的。 –

回答

0

規則說常量應適用於之前會發生什麼,但有一個語法糖:

const char 

相當於

char const 

因此讀數:

「penv需要一個指向常量字符的常量指針」

因此你是正確的:)

+0

非常感謝您的幫助。 –

0

是的,你是對的。

訣竅是向後(從右到左)讀取的聲明:

static void penv(const char * const * envp); 

這裏,envp是一個指針(const char * const *)指向一個常量指針(const char * const),它指向一個常量字符(const char)。

+0

僅供參考,動詞是「to point」,而不是「to pointer」 – pat

+0

@pat固定。謝謝。 :P – herohuyongtao

0

當你說:「常量指針」,目前尚不清楚,如果你的意思是指針是恆定的,或者東西它指向。

剛剛看過向後類型(並認識到const charchar const是一回事。

在這種情況下,envp是一個指針(不固定),以恆定的指針不斷char

envp可以設置爲別的地方,但指針(S)它指向不能被修改,也不可以在char(縣),他們指出。