const关键词是用来保护数据不被无意修改。
可以用const修饰符号常量。 const double PI=3.14
const int i和int const i是一样的
也可以用const限定指针,但是限制指针时有几个需要注意的地方。
1 const修饰的位置
const int* i,此时效果等同于int const *i
可以这么看,先把const去掉,那么上面分别是(int* )i 和 int (*i)、 都意味着指向int型数的指针
但是当这么const再接近i时,则不是那么一回事了。int * const i 这是const时修饰i的,也就是说,i里装的数据也就是内存地址是不可修改的,而此对应地址指向的 数据反而是可以修改的。
此时,i+=2 //是非法的
*i=3 //是合法的
2 指针赋值
将常量或者非常量数据地址赋值给常量指针是合法的,但是将常量数据地址赋给普通指针则是非法的
因为常量指针意味着无论指向的数据是不是常量,都可以通过指针修改其具体的值。但是普通指针如果赋给常量数据的话,则可以通过指针修改常量数据,这与加const的初衷相悖,所以行不通。
当然也可以通过const来修饰数组
double num[4]={12.32,43.2, 54,6, 9.66}
const double *d=num;
*d=&num[2] //不允许
*d=9.32 //允许
double A[3]={32,1, 54.3, 65.5};
const double B[4]={1.1, 2.2, 3.3, 4.4 };
double *p=A; //合法
*p=B[2]; //不合法
p=&A[2]; // 合法