C++ const常量

2018-11-14  本文已影响6人  CoderGuogt

下面通过几个例子,具体了解一下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

上一篇 下一篇

猜你喜欢

热点阅读