3.7.2 const修饰符
在C51语言中,用关键字const修饰的是一类特殊的常量,一般称为符号常量或const变量。const修饰符主要用来定义常量或变量。其定义格式为“const<类型说明符><常量名>=<常量值>;”,示例如下。
const double PI=3.14159;//定义浮点型的const变量
基本数据类型的变量一旦加上const修饰符,程序在编译时,将其视为一个常量,而不再为其分配内存。当在程序中遇到该const变量时,将用其定义时的初值来代替,不能在程序中修改const修饰的变量的值。所以在声明const变量时,必须对其进行初始化赋值,除非该变量是用extern修饰的全局变量。
在C51程序中使用const变量,具有如下两点好处。
❑可以防止程序运行时该值被意外修改。
❑可以方便对于程序中经常使用的值进行统一修改,便于调试程序。
const变量的程序示例如下。
include<stdio.h>//头文件
const double PI=3.14159;//定义圆周率为const变量
void main()//主函数
{
int r;//定义半径
double area,length;//定义圆面积和周长
r=2;//半径赋值
area=rrPI;//计算面积
length=2PIr;//计算周长
printf(“If r=%d,the area=%lf,length=%lf\n”,r,area,length);//输出结果
}
这段程序可在KeilµVision3集成开发环境中运行,执行结果如下。
If r=2,the area=12.566360,length=12.566360
该程序中,将圆周率PI定义为double型的const变量。主程序编译和执行时,如果遇到该变量则自动以double型的值3.14159来代替。
在C51语言中,宏定义和const变量有些类似。宏定义在程序预处理时只对上下文进行简单的文本代替,并不进行具体的语法检查,示例如下。
define ch 12;
对于上面的宏定义语句,C51程序在编译时,如果遇到字符串ch,则将其全部替换为字符串12。至于ch的数据类型则没有指明,因此在使用时会出现一些问题,例如不知道该变量是整型数据还是浮点型数据,就很容易引起混乱。如果使用const变量来定义这个常量,可以进行如下定义。
const int ch=12;//定义ch为整型const变量
const double ch=12;//定义ch为浮点型const变量
这样,在定义时便指明了其数据类型。因此,在这种情况下使用const变量要比宏定义简单明了。使用const变量可以完全代替无参数的宏。
说明宏定义在后面的章节中会具体进行介绍,这里仅指出了其和const变量的区别。