【发布时间】:2011-09-29 06:26:30
【问题描述】:
我很难找到一个直观的模式来说明 const 在 C 和 C++ 语言的声明中的使用方式。以下是一些示例:
const int a; //Const integer
int const a; //Const integer
const int * a; //Pointer to constant integer
int * const a; //Const pointer to an integer
int const * a const; //Const pointer to a const integer
在第 1 行和第 2 行中,const 似乎可以出现在 int 之前或之后,这是它所修改的。
- 那么,在第 4 行,编译器如何确定
const正在修改*(指针)而不是int? - 编译器遵循什么规则来决定
const适用于哪个事物? -
*是否遵循相同的规则?
【问题讨论】:
-
如果不涉及数组或函数,简单地从右到左读取也可能有所帮助:
int const * const a: "a是一个指向 const 的 const 指针整数”。 -
马克,如果你提交了这个作为答案,我会检查它。非常有用,真的能帮我弄清楚!
-
@Adam 下面的答案提供了极好的解释,我不觉得只是链接提供了真实的答案;不过,很高兴它有所帮助。
-
我一直不明白为什么“顺时针螺旋”规则是顺时针螺旋。您正在阅读一维令牌字符串,因此您可以通过“向下”而不是“向上”轻松地逆时针绘制想象中的螺旋......