const限定符
一、简要
1、const int bufsize = 512;//任何试图为bufsize赋值的行为都将引发错误
2、因为const对象一旦创建之后其值就不能再改变,所以const对象必须初始化。
3、默认状态下,const对象仅在文件内有效。
4、如果想在多个文件之间共享const对象,必须在变量的定义之前添加extern关键字。
二、const的引用
1、可以把引用绑定到const对象上,就像绑定到其他对象上一样,我们称之为对常量的引用。与普通引用不用的是,对常量的引用不能被用作修改它所绑定的对象.
三、指针和const
与引用一样,也可以令指针指向常量或非常量。类似于常量引用,指向常量的指针不能用于改变其所指对象的值。要想存放常量对象的地址,只能使用指向常量的指针:
const double pi = 3.14;
double *ptr = π //错误:ptr是一个普通指针
const double *cptr = π//正确
指针的类型必须与其所指的对象一致,又是有两个例外。第一种例外情况是允许令一个指向常量的指针指向一个非常量的对象:
四、const指针
指针是对象而引用不是,因此就像其他对象类型一样,允许把指针本身定义为常量。常量指针必须必须初始化,而且一旦初始化完成,则它的值就不能再改变了
int errNumb = 0;
int *const curErr = &errNumb; // curErr将一直指向errNumb
const double pi = 3.14;
const double *const pip = π//pip是一个指向常量对象的常量指针
要想弄清楚这些声明的含义最行之有效的办法是从右向左阅读。在此例中,离curErr最近的符号是const,意味着curErr本身是一个常量对象,对象的类型由声明符的其余部分决定。声明符的下一个符号是*,意思是curErr是一个常量指针。