一、修饰普通变量:
const double PI = 3.14159;
const int a = 10;//这些C++中的内置类型被const修饰时,其值不可被随意更改
二、修饰一个指针(即指针对应的值不可修改):
但是指针作为一个变量,其可指向其他位置,只是无法通过指针来改变其指向的对象的值
int a = 10;
int b = 20;
const int* p = &a;
*p = 20;//这条语句是存在语法错误的,因为其改变了指针对应的对象的值
//但是存在一种方法能够修改该对象的值const_cast
//但由于它可能引发未定义行为,所以并不推荐使用
const int* const_b = &b;
int* change_b=const_cast<int*>(const_b);
*change_b = 10;
std::cout<<*change_b;//打印结果是修改后的值,即b = 10;
//注意调用const_cast时需保证其类型为指针、引用或指向对象类型成员的指针(对象类成员即类或结构体的成员变量或成员函数)
三、修饰指针变量:
不同于第二点,这里的指针变量即指针指向的地址是不可更改的,但是指针指向的对象的值是可以更改的,故可以通过指针来修改对象的值:
int a = 20;
int b = 10;
int* const p = &a;
p = &b;//该行为会导致错误
*p = 1;//正确,将a的值改为1;
std::cout<<a;//打印结果为1;
四:既修饰指针变量,又修饰指针类型:
第四点即将第二、三点结合即可,表示指针本身及其对应的对象均不可修改
int a = 10;
int b = 20;
const int* const p = &a;
p = &b;
*p = 1;//两种操作均会报错
五:修饰函数的参数:
表示该参数不可更改:
void print(const int a){
a = 6;//错误,a为不可修改的值
std::cout<< a <<std::endl;
}
六:修饰函数的返回值:
同上面几点,只不过是将const修饰的值变成了函数的返回值
const int fun1();//同第一点
const int* func2();//同第二点
int* const func3();//同第三点
标签:10,const,int,C++,用法,修饰,20,指针
From: https://blog.51cto.com/u_16271511/8707021