int main()
{
int Temp1 = 0;
int Temp2 = 0;
//const 在*号左边修饰则p指向的变量是一个常量
//根据上面的说则有下面两种写法,意思都是一样的
//1.p认为指向的是常量则:不能通过p修改指向变量的值
//2.p自己不是常量则:不用初始化赋值,p可以修改指向的地址
const int* p1;//可以不用初始化赋值
p1 = &Temp1;//指向地址
p1 = &Temp2;//指向地址可以改变
//*p1 = 1;//出错p认为指向的是常量不能修改
//下面这种方式和上面一样等价
int const* p2;
//const在*号右边修饰则p本身是一个常量
//1.p自己是常量则:必须初始化就赋值
//2.p自己是常量则:指向的地址不能修改
//3.p自己是常量则没有要求指向的地址是否是常量,则可以通过p改变指向地址数据的值
int * const p3 = &Temp1;//必须初始化赋值
*p3 = Temp2;//可以修改指向数据的值
//p3 = &Temp2;//出错指向的地址不能改变
//*号左右都有const修饰则p指向的是常量,p本身也是常量
//1.p自己是常量且指向的数据地址也是常量则:必p须初始化赋值,p指向地址无法改变,无法通过p改变指向数据地址的值
const int* const p4 = &Temp1;//必须初始化赋值
//p4 = &Temp2;//出错
//*p4 = Temp2;//出错
//下面这种方式和上面一样等价是通过const在*左边有两种方式推导出来的
int const * const p5 = &Temp1;
//只要记住:
//1.const在*号左边表示指向数据地址是常量
//2.const在*号右边表示指针自己是常量
//则const基本上就能吃透了
return 0;
}
超快速理解const修饰的作用
最新推荐文章于 2024-03-06 18:06:10 发布