const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。
被const修饰的变量会被编译器强制认为成一个常量,赋值受到限制。
通过下面代码,看一下const关键字遇到指针时的辨析
//code 1
int main()
{
int a=10,b=9;
int *const p1=&a;
cout<<*p1<<"----"<<endl;
//p1=&b;①
//*p1=b;②
cout<<*p1<<endl;
return 0;
}
//code 2
int main()
{
int a=10,b=9;
int *const p1=&a;
cout<<*p1<<"----"<<endl;
//p1=&b;①
//*p1=b;②
cout<<*p1<<endl;
return 0;
}
//code 3
int main()
{
int a=10,b=9;
const int *const p1=&a;
cout<<*p1<<"----"<<endl;
//p1=&b;①
//*p1=b;②
cout<<*p1<<endl;
return 0;
}
上面三串代码的区别在于修饰p1的const关键字的位置是在*的前面还是后面,或者都有。
Code1 | Code2 | Code3 | |
const位置 | 在*后面 | 在*前面 | 前后均有 |
const修饰对象 | 指针为常量 | 指针指向对象为常量 | 指针、指向均为常量 |
有效语句(可执行) | ①p1=&b; | ②*p1=b; | 两个语句均不能执行 |
在执行上面代码时,如果执行了错误的语句==给const常量赋值,结果时不能执行,同时编译器警示左值不可修改