指针本身是一个变量,本质上是一个存放其他变量的地址的变量。
与const有关的指针可以分为3种:
- 指向常量的指针
- 常量指针
- 指向常量的常量指针
- 指向常量的指针
指针本身的值(地址)可以修改(比如赋予新的地址,使之指向另一个变量),但指向的常量的值不能修改。
const int a=1;
int *ptr=&a;
*ptr=2;//错误,指向的变量是个常量,不能修改
- 常量指针
指针本身的值(地址)不能修改,但是可以通过指针修改指针指向的普通变量的值。
格式:type *const name
注意*号在const之前
int a=1;
int *const ptr=&a;
*ptr=2;//通过指针修改指向的变量的值
cout<<"a="<<a<<endl;
输出:a=2
- 指向常量的常量指针
指针本身的值(地址)不能修改,指向的常量的值也不能修改。
格式:const type *const name
第一个const表示指针指向了一个const常量
第二个const表示指针是个常量指针
const int a=1;
const int *ptr=&a;
*ptr=2;//错误,指向的变量是个常量,不能修改
参考资料:《C++ Primer》