宏定义和常变量

在C语言中用#define定义符号常量,且#define通过编译预处理命令完成。如:

      #define PI  3.14

实际上,只是在程序预编译时进行字符的置换,将所有的PI替换成3.14.在预处理结束以后,程序中将没有PI这个符号。

使用符号常量比直接使用常量更直观,我们还可以用符号表示一定的意义;在程序维护中如果需要改变常量的值,只需要在#define命令中修改就可以了。

使用符号常量需要注意的问题:

             一是符号常量不是变量,在程序运行时不分配内存单元,只是在编译预处理阶段将标识符替换成所代表的常量;

             二是符号常量没有类型,在编译时不进行类型检查;

             三是替换后的表达式和预想的表达式不一定一致。

在C++中提供了用const定义常变量的方法,如:

          const float  PI =3.14

常变量在声明之后立即被初始化(可以用值初始化,也可以用表达式进行初始化)。使用表达式初始化时,系统化先计算出表达式的值,然后将值赋给常变量;

另外需要注意的是,系统在静态区给常变量分配内存但愿,普通变量是在堆栈区分配内存单元。系统还会对常变量进行类型检查,进一步降低了程序的出错概率。

posted on 2013-10-27 18:58  娟娟细流  阅读(893)  评论(0编辑  收藏  举报

导航