C++ const常量

  • Const是常量的意思,被其修饰的变量不可修改
  • 如果修饰的是类、结构体,那么其成员变量也不可修改
  • Const修饰的是其右边的内容

下面通过几个例子,具体了解一下Const

  1. const int *p
int age = 10;
const int *p = &age;

Const修饰的是右边的内容,得出*p是常量,p不是常量,所以直接修改p指向存储空间的内容是会报错的,也就是*p = 20;是编译不通过的;但是可以更改p的指向。

int age = 10;
// *p是常量,p不是常量
const int *p = &age;
// *p = 20; // *p是常量,不能修改,编译不通过
int height = 20;
p = &height;
    
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;

运行结果:

age = 10
*p = 20

2.int *const p

int age = 10;
// p是常量,*p不是常量
int *const p = &age;
*p = 20;
int height = 40;
// p = &height; // p是常量,编译不通过
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;    

运行结果:

age = 20
*p = 20

3.int const *p

int age = 10;
int height = 20;
// *p是常量,p不是常量
int const *p = &age;
cout << "*p = " << *p << endl;
// *p = 20; // *p是常量,编译不通过
p = &height;
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;

运行结果:

*p = 10
age = 10
*p = 20

4.cont int *const p

int age = 10;
int height = 20;
// *p是常量,p是常量
const int *const p = &age;
cout << "*p = " << *p << endl;
// *p = 20; // *p是常量,编译不通过
// p = &height; // p是常量,编译不通过
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;

运行结果:

*p = 10
age = 10
*p = 10

5.int const *const p

int age = 10;
int height = 20;
// *p是常量,p是常量
int const *const p = &age;
cout << "*p = " << *p << endl;
// *p = 20; // *p是常量,编译不通过
// p = &height; // p是常量,编译不通过
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;

运行结果:

*p = 10
age = 10
*p = 10

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容