C++中的Const关键字
这里的具体内容主要参考C++ Primer Plus 7.3.5小节
const有两种方法用于指针.
第一种方式是让指针指向一个常量const对象,可以防止使用该指针来修改所指向的值.
第二种方法是将指针本身声明为常量,可以防止改变指针指向的位置.
指向一个const的指针
1 | int age = 39; |
以上的声明指出, pt指向一个const int,也就是不能使用pt指针来对其进行修改
*pt的值是一个const,无法进行修改.
但是pt这个声明并不是代表age这个变量本身是个const不能进行修改,而是表示对于pt指针而言age是个const不能进行修改
1 | *pt = 20; // 不行,因为pt指向的对象是const |
可以将const变量的地址赋值给定义成为const的指针,但是不可以将const变量的地址赋值给普通的指针.
后者很好理解,你一个const的变量说好的const,结果又能被一个指针来进行修改,这不是搞嘛.
const关键字在函数中的作用也很大
假设有下面这个const数据组成的数组
1 | const int months[3] = {31, 28, 31}; |
那么常量const数组的首地址不能作为函数的非常量形参传入
1 | int sum(int arr[], int n); // 不行,必须使用常量,const int arr[] |
对于写代码,尽可能使用const,使用const可以让函数可以处理const和非const的实参.
如果条件允许,应该将指针形参声明为指向const的指针
指针本身为const
1 | int age = 39; |
对于之前所定义的pt,此处指针的声明表明,*pt是不能改变的,但是pt本身是可以改变的.
也就是说以下的操作是合法的.
1 | int sage = 80; |
第二种使用const的方式就是让pt本身变成不可修改
1 | int sloth = 3; |
最后一种的声明方式表明,finger只能指向sloth.