有趣的const
之前学习c语言时没有过多了解,现在做个小小的总结。
const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。
下面介绍一下它的具体功能:
1.修饰变量
const int a=2;
上面这个例子表明,变量i具有只读特性,不能够被更改;若想对a重新赋值,如a= 5;则是错误的。
定义变量的同时,必须要初始化。定义形式也可以写成int const a=2
此外,const修饰变量还起到了节约空间的目的,通常编译器并不给普通const只读变量分配空间,而是将它们保存到符号表中,无需读写内存操作,程序执行效率也会提高。
2,修饰指针
int i=7;
int j=5;
int a=0;
const int *p=&i;//定义的第一种
int *const q=&j;//定义的第二种
在第一种定义下p的指针所指向的地址空间的值将不会改变,若是执行 *p=8 就会报错,但是可以改变p指针的地址,例 p=&a 是可以运行的。
而在第二种定义下q的指针const是针对q定义的,所以和第一种的效果相反,若是执行 *q=8 是可以正常运行的,而 q=&a 会报错。
3.修饰数组
C语言中const还可以修饰数组,举例如下:
const int a[6] = {
0,1,2,3,4,5};
a[0] = a[0]+1; //错误
数组元素与变量类似,具有只读属性,不能被更改;一旦更改,如程序将会报错。
4.函数参数修饰
void func1(const int i){
i++;//对i的值进行修改,程序报错
}
void func2(const int *j){
(*j)++;//对j的值进行修改,程序报错
}
以上是我对const的一些总结,希望大家可以指正,谢谢。