第四点 const关键字介绍及应用
1.什么是const?
const是一个类型修饰符,使用const修饰变量可以将变量的值不能改变。
常类型是指使用const说明的类型,常类型的变量或者对象的值是不能被更新的。
2.const有什么主要作用?
1)定义const变量,具有不可变性。例如const int Max=100
2)便于进行类型检查,使编译器对处理内容有更多的了解,消除一些隐患。例如:void f(const int i){}编译器就会知道i是一个常量,不允许修改。
3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变全变!如例一中,如果想要修改Max的内容,只要:const int Max=you want;即可全部改变。
4)可以保护被修改的东西,防止意外的改动,增强程序的健壮性。如例一,如果在函数中修改了i的值,编译器就会报错
5)可以节省空间,避免不必要的内存分配:const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不像#define那样给出的是立即数。所以,const定义的常量在程序运行中只有一份拷贝,而#define定义的常量在内存中会有若干个拷贝。
6)提高效率。编译器通常不会为普通const常量分配存储空间,而是将他们保存到符号表中,这使得它成为一个编译期间的常量,没有了存储于度内存的操作,提高执行效率。
4.如何使用const?
1)修饰一般常(变量)。这种常量在定义时,修饰const可以用在类型说明前,也可以用在类型说明符后。
2)修饰指针变量:
(1)下例中const的作用是指针变量的指向可以改变,但是指向的变量的值不可改变
int a=10,b=20;const int *p=&a;*p=1000;//此句报错
int const *p1=&a;p1=p;*p1=100;//报错
(2)const修饰的指针变量,指针变量指向的值可以改变,但指向不能改变。
int * const p2=&a; *p2=2000;p2=&b;//报错
(3)const修饰的指针变量的指向和值,都不能改变
const int *const p3=&a;p3=&b;//报错 *p3=100;//报错
|
|