const 的引用
int a = 5;
const int b = 10;
//1.左值:常量引用,右值:常量;
const int& c = b;
//2.左值:常量引用,右值:变量;
const int& c = a;
//3.左值:非常量引用,右值:常量;
int& d = b;//将 "int &" 类型的引用绑定到 "const int" 类型的初始值设定项时,限定符被丢弃
//4.左值:非常量引用, 右值:变量;
int& d = a;
当右值为常量时,左值必须是对const的引用;
当左值为常量时,右值不一定是对const的引用;
const和指针
1.指向常量的指针
可以指向多个变量(常量),但都不会改变该变量(常量)的值;
int a = 5;
const int b = 10;
const int* ptr = &a;//指向的第一个变量
*ptr = 15;//错误 表达式必须是可修改的左值
ptr = &b;//正确 指向的第二个常量(可以指向多个变量(常量))
*ptr = 20;//错误 表达式必须是可修改的左值,但都不会改变该变量(常量)的值;
const引用和指向常量的指针又是自以为指了个常量(其实有可能是个变量),就自发的不去更改所指对象的值。
2.常量指针(const 指针)
只能指向一个变量,但可以修改其值
int a=5,aa=5;
const int b = 10;
int *const c = &b; //不能是常量。错误:"const int *" 类型的值不能用于初始化 "int *const" 类型的实体
int *const c = &a;//变量
*c = 15;//可以修改其值
c = &aa; //只能指向一个。错误:表达式必须是可修改的左值
默认状态下,const对象仅在文件内有效
默认状态下,当在不同文件中定义相同变量名的const变量时,相当于在不同文件中定义了不同的独立的变量。
就是说那怕你在不同文件中定义相同变量名,那也是不同的const变量
如果你想做到在一个源文件中只声明一次const变量,在各个文件都有效的话,就用extern关键字
记得引用头文件( .h)
extern const<数据类型> 变量名;