這應該是一個非常簡單的問題。我正在刷我的C,並想確保我正確理解const指針。關於const指針的快速說明
說我有一個功能static void penv(const char * const * envp)
;我認爲這是因爲「penv將指針envp指向const char指針」。它是否正確?
這應該是一個非常簡單的問題。我正在刷我的C,並想確保我正確理解const指針。關於const指針的快速說明
說我有一個功能static void penv(const char * const * envp)
;我認爲這是因爲「penv將指針envp指向const char指針」。它是否正確?
規則說常量應適用於之前會發生什麼,但有一個語法糖:
const char
相當於
char const
因此讀數:
「penv需要一個指向常量字符的常量指針」
因此你是正確的:)
非常感謝您的幫助。 –
是的,你是對的。
訣竅是向後(從右到左)讀取的聲明:
static void penv(const char * const * envp);
這裏,envp
是一個指針(const char * const *
)指向一個常量指針(const char * const
),它指向一個常量字符(const char
)。
僅供參考,動詞是「to point」,而不是「to pointer」 – pat
@pat固定。謝謝。 :P – herohuyongtao
當你說:「常量指針」,目前尚不清楚,如果你的意思是指針是恆定的,或者東西它指向。
剛剛看過向後類型(並認識到const char
和char const
是一回事。
在這種情況下,envp
是一個指針(不固定),以恆定的指針不斷char
。
即envp
可以設置爲別的地方,但指針(S)它指向不能被修改,也不可以在char
(縣),他們指出。
是的,這是正確的 – thumbmunkeys
我的建議是一個直接使用'const'指針無效。而是寫typedef,比如'typedef const char * LPCSTR;'。乍一看,什麼是常量,什麼不是常量。代碼的清晰度通常是最重要的。 –