引入:对于一个程序中多处出现的常量,通过选择一个助记名,可能使程序更具可读性。
const 类型限定修饰符提供了一个解决方案,它把一个对象转换成一个常量( constant)--只读 。
1. const 常量
因为常量在定义后就不能被修改,所以它必须被初始化。未初始化的常量定义将导致编译错误。
const double pi; // 错误: 未初始化的常量
const double pi=3.14 //ok
2.指向 const 的指针
const 对象的地址只能赋值给指向 const 对象的指针.指向 const 对象的指针可以被赋以一个非 const 对象的地址。
//pc 是一个指向 double 类型的 被定义成 const 的对象的指针
const double *pc = 0;
const double minWage = 9.60;
double dval = 3.14;
// ok: 不能通过 pc 修改 minWage
pc = &minWage;
// ok: dval 本身不是一个常量 但是不能通过 pc 修改 dval
pc = &dval;
在实际的程序中,指向 const 的指针常被用作函数的形式参数,它作为一个约定来保证:被传递给函数的实际对象在函数中不会被修改
3. const 指针
//curErr 是指向一个非 const 对象的 const 指针
//不能赋给 curErr 其他的地址值 但可以修改 curErr 指向的值
int errNumb = 0;
//curErr是一个指向 int 类型对象的 const 指针
int *const curErr = &errNumb;
4.指向 const 对象的 const 指针
const double pi = 3.14159;
//pi_ptr 是指向被定义为 const 的 double 类型对象的 const 指针
const double *const pi_ptr = π
pi_ptr指向的对象的值以及它的地址本身都不能被改变