在C语言中用#define定义符号常量,且#define通过编译预处理命令完成。如:
#define PI 3.14
实际上,只是在程序预编译时进行字符的置换,将所有的PI替换成3.14.在预处理结束以后,程序中将没有PI这个符号。
使用符号常量比直接使用常量更直观,我们还可以用符号表示一定的意义;在程序维护中如果需要改变常量的值,只需要在#define命令中修改就可以了。
使用符号常量需要注意的问题:
一是符号常量不是变量,在程序运行时不分配内存单元,只是在编译预处理阶段将标识符替换成所代表的常量;
二是符号常量没有类型,在编译时不进行类型检查;
三是替换后的表达式和预想的表达式不一定一致。
在C++中提供了用const定义常变量的方法,如:
const float PI =3.14
常变量在声明之后立即被初始化(可以用值初始化,也可以用表达式进行初始化)。使用表达式初始化时,系统化先计算出表达式的值,然后将值赋给常变量;
另外需要注意的是,系统在静态区给常变量分配内存但愿,普通变量是在堆栈区分配内存单元。系统还会对常变量进行类型检查,进一步降低了程序的出错概率。