2014-04-15 50 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(县),他们指出。