一般(非指针)变量
对于一般类型(指非指针)变量,const
关键字表明该变量为常量,其值不能被修改,声明一个常量和声明一个变量的方法类似:
1 | const int a; |
这两种方法等价。
指针变量
对于指针变量,const
可能修饰的对象就有指针和指针指向的实体两种了。
1 | const int *pci; |
第一种和第二种修饰的是指针指向的实体,第三种则修饰指针。
简单小结一下,就是如果const
在*
(解引用/间接)运算符前,修饰的就是实体;在*
后则修饰指针。
多个变量
考虑更复杂的情况,当同时存在多个变量时,const
对后续变量是否有效?
利用下述测试代码,通过对const
限定符的变量进行修改,可以得到编译器的错误信息,从而得知const
的作用范围:
1 | int main(void) |
可见,只有单独对指针进行修饰的const
关键字是只作用于单个变量的,其余都是对后续声明生效的。