c++之const
2020-02-28 本文已影响0人
全村的卡密
被const修饰的变量不可修改。
从实例来了解const。
int age = 10;
int height = 190;
const int *p1 = &age;
int const *p2 = &age;
int *const p3 = &age;
const int * const p4 = &age;
int const * const p5 = &age;
const修饰的是其右边的内容。
从p3分析
int *const p3 = &age;
*p3 = 20;
p3 = &height;
*p3 = 40;
第二行报错
const 修饰的是p3,和前面没有关系,所以意味着p3是常量,而p3不是常量。
对p1分析,
const int *p1 = &age;
*p1 = 20;
p1 = &height;
*p1 = 40;
第一、三行报错。
const修饰的是*p1,指针指向的值不能改。
p1,p2没有区别,const可以和变量类型位置交换,效果和p1一样。
同理,p4和p5也没有区别。
const int * const p4 = &age;
*p4 = 20;
p4 = &height;
*p4 = 40;
所有都不能修改。
那么同理,对于结构体也是一样的道理,不再赘述。
结构体