const:
1、const关键字(常量必须进行初始化)
const int MAX_VAL = 23;
const int MIN_VAL=0;
2、定义指向常量的指针(常量指针指向的内容是不可修改的)
int a=10;
const int *p=&a;
3、定义指针常量(因为指针常量为一个常量,所以必须给他赋初值。虽然指针常量的值不能变,但是它指向的内容可改变)
int b = 10;
int *const pb=&b;
4、定义指向常量的常量指针(指向的对象不可改变)
const int a = 10;
const *const pb=&a;
5、const vs #define:(尽量以const代替的define)
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。 (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。
引用:(引用的时候必须进行初始化,引用跟某一变量绑定之后不能再绑定其他的变量)(变量才能使用引用)
1、引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。以引用返回函数值,定义函数时需要在函数名前加& 用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本
int a;
int &refa=a;//引用
2、引用VS指针
1) 指针是一个实体,而引用仅是个别名;
2)引用使用时无需解引用(*),指针需要解引用
3)引用只能在定义时被初始化一次,之后不可变;指针可变
4)引用不能为空,指针可以为空