const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。
const修饰变量
const float PI = 3.14;
//产量不可修改
PI = 12.0; //error
const修饰的变量不可修改,此为常量,如同一些常数不可修改。注意在定义时初始化,如果定义后再初始化将报错,且该常量为随机数。没有意义。
这个相对于宏定义改进了一些地方,检查数据类型,检查表达式的语法,在效率上也提高,空间占用更少。
const修饰数组
const int ARRAY[10] = {0};
这个注意事项与变量一样。
const修饰指针
const char *ptr1;
char const *ptr2;
char * const ptr3;
const char * const ptr4;
这个主要看const与那个运算符接近,就修饰那个运算符。第一个const接近,则修饰它,效果为该指针指向的数据不可修改,该指针变量可以修改。第二个和第一个一样,都是修饰,效果相同。第三个const修饰指针变量,则该指针变量不可修改,指针变量指向的数据可以修改。第四个,指向的数据和指针变量都被const修饰,两者均不可以修改。方法就是看const离那个运算符近,就修饰那个。
const修饰形参
char *strcpy( char *to, const char *from );
字符串拷贝函数,我们只需拷贝内容,并不需要改变fron指针指向的内容。const修饰不需要改变的形参好处有二:一,如果函数内部破坏该数据,编译器将报错,保护数据。二,让调用者明显看到该形参不可改变,做出一些必要调准。
C语言中const缺陷
const float PI = 3.14;
//PI = 3.0; ERROR
printf("DEFORE PI = %f\n",PI);
float *ptr = Π
*ptr = 3.0;
printf("AFTER PI = %f\n",PI);
结果
DEFORE PI = 3.140000
AFTER PI = 3.000000
可以看到,在C语言中,const修饰的常量虽然不能直接修改,但可以间接修改。
const一般使用
const一般使用在常量和修饰形参居多,在修饰变量时,变量名一般起大写的名字,这样一看到就知道是常量,且在定义时记得初始化。
微信号
网友评论