澄清并记住 C 中 const 的用法

Ank*_*wal 4 c

argv 是指向字符的常量指针数组

char * const argv[] // 1
Run Code Online (Sandbox Code Playgroud)

argv 是指向字符的指针数组,这些字符是常量

const char * argv[] // 2
Run Code Online (Sandbox Code Playgroud)

有什么技巧可以记住第一条吗?

Bil*_*eal 5

const char * argv[] // 2
Run Code Online (Sandbox Code Playgroud)

也可以写成:

char const * argv[] // 3
Run Code Online (Sandbox Code Playgroud)

因为C不关心类型中const的顺序。如果这样写,那么这个东西实际上const就是关键字左边的东西const。其中 is first 的形式const是该规则的一个例外;但在这种情况下,左侧没有任何内容,const因此根据此经验法则很容易避免这种情况。

char*             // mutable pointer to mutable char
char const*       // mutable pointer to constant char
char * const      // constant pointer to mutable char
char const* const // constant pointer to constant char
Run Code Online (Sandbox Code Playgroud)

  • @abc:我真的不能把它归功于——我从[C++模板:完整指南](http://www.amazon.com/Templates-The-Complete-Guide-ebook/dp/B003YL3OYG /ref=tmm_kin_title_0?ie=UTF8&qid=1369195044&sr=8-1) (2认同)