这应该是一个非常简单的问题。我正在刷我的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;'。乍一看,什么是常量,什么不是常量。代码的清晰度通常是最重要的。 –