一、const
在C语言中(编译阶段中)
看常变量是否做左值,剩下的处理和普通的一样
eg: const int a; a = 10;//error
在C++中(编译阶段把用到常量的地方替换成常量初始值)
常量不允许修改
- 常量一定要初始化
- 不允许普通指针指向(有被修改的风险)
这段代码中a 里面是20,但是打印却是10.
3.const int gdata = 10;//local 属性 data段
extern const int gdata = 10;
(extern 使 local à global ; 声明外部变量)
二、引用
底层处理:
在C++中和指针处理方式相同
Int a = 10; int& b = a; b = 20; (系统自动解引用即 (*b) = 20; a = 20)
特点:1、引用必须要初始化
2、引用初始化的变量一定能取地址
3、引用是不可改变的
/*
int a = 10;
int& c =a;
int b = 20;
&c = b;//error
*/
4、引用只能访问引用变量所引用的内存单元
cout<< c <<endl;èa的值 10
cout<< &c <<endl;èa的地址 &a
如何给一维数组引用