本文介绍C++中的关键字const
const用来控制C++中的变量是否可以变化
- const与基本数据类型
- const与指针类型
- const与引用
int a=2;//变量
//变量名: a
//存储地址:&a
//存储内容:2
加上const之后,变量就变成了常量
const int a=2;//常量
//变量名:a
//存储地址:&a
//存储内容:2
2.const与指针类型
数据类型前面加const和后面加const完全等价
const int *p=NULL;//const写在数据类型前面 这两种写法完全等价
int const *p=NULL;//const写在数据类型后面
* 后面加const
int *const p=NULL;
数据类型前面* 后面,和数据类型后面*后面完全等价
const int *const p=NULL; 这两种完全等价
int const *const p=NULL;
int a=3,b=4;
const int *p=&a;
p=&b;//允许执行
*p=5;//不允许执行,const修饰*p,*p的值不能被修改
变量名
存储地址 存储内容
a &a 3
p &p &a
Example:
int a=2,b=3;
int *const p=&a;
p=&b;//不允许,const在*的后面,意味着修饰p,p只能指向一个地址,不能被修改,用p再指向其他的地址时会报错。
变量名 存储地址 存储内容
a &a 2
p &p &a(被修饰,不能被修改)
Example:
int a=4,b=5;
const int *const p=&a;
p=&b;//不允许
*p=6;//不允许,前后都加了const时,p,*p都不能被修改
变量名 存储地址 存储内容
a &a 4(被修饰,不能被修改)
p &p &a(被修饰,不能被修改)
3.const与引用Example:
int a=3;
const int &b=a;
x=4;//允许
b=5;//不允许,b作为a的别名,前面嫁了修饰符const,b不能被修改