1、定义:const是一个类型修饰符;使用const修饰变量则可以让变量的值不能改变;
常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被跟新的。
2、作用:
(1)可以定义const常量,具有不可变性;
(2)便于进行类型检查;
(3)可以避免模糊的数字出现,同样可以很方便的进行参数的调整和修改;
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性;
(5)可以节省空间,避免不必要的内存分配。
例如:
#define PI 3.14159 //常量宏
const double Pi=3.14159; //此时并未将Pi放入ROM中
double i=Pi; //此时为Pi分配内存,以后不再分配i
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有分配内存
double j=PI; //再进行宏替换,又一次分配内存
(6)提高了效率。编译器通常不为const常量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率很高。
3、const使用的地方
1)修饰常量
2)修饰指针变量
如:int a=2,b=20;
const int *p=&a;//定义了指向常量的指针p,给指针p初始化
p=&b; //重新改变了指针p的指向
*p=100;//此操作是错误的
由此可知,const型的指针变量p的指向可以改变,但是指向的变量的值是不能改变的。
如:int a=2,b=20;
int *const p=&a;//定义了常指针p,给指针p初始化
p=&b; //重新改变了指针p的指向
*p=100;//此操作是错误的
由此可知,const修饰的指针变量,指针变量指向的变量值可以改变,但是指向不能改变。
如:int a=2,b=20;
const int * const p=&a;//定义了指向常量的常指针p
由此可见,指向常量的常指针指向的变量值不可以改变,指向也不能改变。
记忆技巧:看const和*的位置,若const在*的左侧,此时表示指针变量指向的变量的值不能变,但是指向可以变;若const在*的右侧,此时表示指针变量指向的变量的值可以变,但是指向不可以变;若若const在*的两侧侧,此时表示指针变量指向的变量的值不可以变,指向也不可以变
3)修饰数组 |
|