1)限定符声明变量只能被读
2)const 变量必须初始化
const int i=5;
const int j;//非法
const *int a;//无需初始化
int* const b;//非法,b要初始化
3)const使变量拥有文件作用域,若想在其他文件使用:在定义时:extern const int i=100;在另一个文件中使用时这样声明:extern const int i;然后就可以在这个文件中使用i了。
4)const int i=10;在编译优化后i是不会被分配内存的,而是直接将10代入以后的引用中
5)#define 和const 定义的常量在定义是均不会分配内存,在使用时,第一次使用const常量使分配内存,以后不再分配。而使用define常量时,每使用一次,分配一次内存。
6)const int *p;与int *const p;的区别
int main(){
int c=100;
int d=1000;
const int a=10;//需要初始化
const int *ab;//无需初始化
int* const ac=&d;cout<<*ac<<endl;//需要初始化 *ac=1000
//ac=10;//不可修改
//*ab=a;
ab=&a;cout<<*ab<<endl;//*ab是const类型,不可修改 *ab=10
ab=&c;cout<<*ab<<endl;//但ab可以修改 *ab=100
//ac=&c;error
*ac=c;cout<<*ac<<endl;//a是const类型,不可修改 *ac=100
*ac=10000;cout<<*ac<<endl;//但*a可以修改 *ac=10000;
7)const 修饰类数据成员,成员函数,类对象,形参。
在成员函数形参后添加const,表明该函数不会修改类的数据成员,
const修饰数据成员表示该数据成员一旦赋值就不可变,
const修饰类对象,该对象只能调用类的const成员,
const修饰形参,指不可改变形惨。