8.2.2 const指针

使指针本身成为一个const指针,必须把const标明的部分放在*的右边,如:

8.2.2 const指针 - 图1

现在它读成“w是一个指针,这个指针是指向int的const指针”。因为指针本身现在是const指针,编译器要求给它一个初始值,这个值在指针生命期间内不变。然而要改变它所指向的值是可以的,可以写

8.2.2 const指针 - 图2

也可以使用下面两种合法形式中的任何一种把一个const指针指向一个const对象:

8.2.2 const指针 - 图3

8.2.2 const指针 - 图4

现在,指针和对象都不能改变。

一些人认为第二种形式的一致性更好,因为const总是放在被修饰者的右边。但对于特定的编码风格来讲,程序员应当自己决定哪一种形式更清楚。

下面这个可编译的文件包含上面出现的一些语句

8.2.2 const指针 - 图5

8.2.2.1 格式

本书主张:只要可能,一行只定义一个指针,并尽可能在定义时初始化。正因为这一点,才可以把‘*’“附于”数据类型上:

8.2.2 const指针 - 图6

int本身好像是一个离散类型。这使代码更容易懂,可惜的是,实际上事情并非那样。事实上,‘’与标识符结合,而不是与类型结合。它可以被放在类型名和标识符之间的任何地方。所以,可以这样做:

8.2.2 const指针 - 图7

它建立一个int*u和一个非指针int v。由于读者时常混淆这一点,因此最好用本书里所用的表示形式(即一行里只定义一个指针)。