const的概念
const是constant的缩写,“恒定不变的”,在C语言中作为类型修饰符关键字,用来定义只读变量(常变量)的关键字,const定义的相当于常量,但又有变量的属性,所以叫常变量。
const推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。
const的作用
1)编译器自动进行类型检查,保护被修饰的变量防止意外的修改,增强程序的健壮性,消除隐患。
2)既可以避免意义模糊的数字出现,又可以同宏定义一样很方便地进行参数的调整和修改。
3)编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。用const修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程。
const修饰的变量的基本定义和初始化方法
先看一下下面的C代码
#includestdio.h
intgetNum()
{
return;
}
intmain()
{
intn=90;
constintMaxNum1=getNum();//合法语句,运行时初始化
constintMaxNum2=n;//合法语句,运行时初始化
constintMaxNum3=80;//合法语句,编译时初始化
constintMaxNum4;//合法语句,但是没有初始化,此变量无意义
MaxNum4=10;//不合法语句,编译报错
return0;
}
可见,定义const变量的同时,必须进行初始化.
初始化有两种方式:运行时初始化和编译时初始化.
const的详细语法
const在C语言标准库函数中的典型应用
C语言标准库函数中,尤其是字符串函数库(string.h)中,很多函数的参数都被const限制了.但我们在以前的编码过程中并没有注意这个问题,经常将非const类型的数据传递给const类型的形参,这样做从未引发任何副作用,原因就是上面讲到的,将非const类型转换为const类型是允许的。
以strcpy函数为例说明const的典型应用,我们也应该在自己的函数中学习这种用法,以达到规避潜在风险的目的.
首先看一下在string.h中strcpy函数的声明
char*strcpy(char*strDestination,constchar*strSource);
函数的作用是将strSource指向的字符串拷贝到strDestination指向的字符串空间中,并返回strDestination的首地址.在这个过程中,srtSource是不需要改变其值的,所以用const加以限制,来保证在函数体中对strSource的误操作,规避潜在风险.
下面分析一下我们在调用strcpy函数时的几种情况,以助于我们加深理解:
预览时标签不可点收录于合集#个上一篇下一篇