1. const 定义常量
必须立刻进行初始化
const int p = 10;
常量 p 有数据类型,因此可以进行更加严格的类型检查,占用存储单元,有地址,可以用指针指向它,但不能修改它。
它消除了 #define 的不安全性。
2. const 修饰指针变量
指向常量的指针
const char * name = “chen”;
声明一个名为 name 的指针变量,它指向一个字符型常量,不允许修改指针所指地址中的常量。
name[3] = 'a'; //非法
不允许改变指针所指的常量。
name = "hu"; //合法
可以改变指针所指的地址。
常指针
常指针就是把指针所指的地址声明为常量。
char * const name = "chen";
name[3] = 'a'; //合法
可以改变指针所指的数据。
name = "hu"; //非法
不能改变指针所指的地址。
指向常量的常指针
const char * const name = "chen";
都不能改变。
3. const 的引用
const int ci = 1024;
const int &r1 = ci; // 正确:ci 是 const 常量,r1 也是 const 常量
r1 = 42; // 错误:r1 是常量的引用,初始化就不能修改了
int &r2 = ci; // 错误:r2 是一个非常量的引用,指向一个常量对象 ci 是不合法的
4. 常量引用的绑定
int i = 42;
const int &r1 = i; // i 是一个整型变量,在绑定的时候转成 const int 型临时变量,然后 r1 绑定上
const int &r2 = 42;
const int &r3 = r1 * 2;
int &r4 = r1 * 2; // 错误 r1 是 const int 而 r4 是 int 不匹配