const修饰指针
关于const修饰指针的情况,一般分为如下4种情况:
int b =500; const int *a =&b; //情况1 int const *a =&b; //情况2 int* const a =&b; //情况3 const int* const a =&b; //情况4
如何区别呢?
如果const 位于星号的左侧,则const 就是用来修饰指针所指向的变量,即指针指向为常量;
如果const 位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
1.情况1和2相同,都是指针所指向的内容为常量,这种情况下不允许对内容进行更改操作。
例如
int b =500; const int *a =&b; //情况1 *a =600; //错误
但也有别的办法改变*a的值,一个是通过改变b的值,另一个是使a指向别处 a = &c 。
对于情况1和2,可以不进行初始化。因为虽然指针内容是常量,但指针本身不是常量。
2.情况3 为指针本身是常量,不能对指针本身进行更改操作,而指针所指向的内容不是常量。
因此,定义时必须同时初始化。
3.情况4 为指针本身和指向的内容均为常量。