C++关键字const
const与基本数据类型
int x = 3;
此时,我们定义了一个变量x,变量的地址为&x,变量值为3,变量值的大小可以被修改。
const int x = 3;
此时,我们定义的x变成了常量,常量地址依然是&x,常量的值依然为3,但是此时常量x的值不可以被修改。
const与指针类型
const int *p = NULL;
int const *p = NULL;
以上两种定义方式是等价的。
const int * const p = NULL;
int const * const p = NULL;
以上两种方式也是等价的。
举几个例子简单说明一下:
1.
int x = 3;
const int *p = &x;
此时,如果我们改变p,例如 p = &y,使其存储变量y的地址,是不会报错的,但是,如果我们修改 *p,例如 *p = 5,就会报错,因为const修饰的是 *p。
2.
int x = 3;
int * const p = &x;
此时,const修饰的是p,也就是说,此时p中存储内容,也就是变量x的地址,不可以被修改,也就是说,若想 p = &y 使p中存储变量y的地址,将会报错。
3.
const int x = 3;
const int * const p = &x;
此时,执行 p = &y 和 *p = 5 都会报错。
const与引用
int x = 3;
const int &y = x;
此时,我们定义了一个变量x,并且给x定义了一个别名y,那么,此时x的值是可以被修改的,但是,y的值不可以被修改,执行 y = 30 会报错,因为y被const修饰。