符号常量与常变量的区别

(1)符号常量:#define指令,指定用一个符号名称代表一个常量。如:

#define PI 3.1416 //注意行末没有分号

经过上面的指定后,本文件中从这行开始所有的PI都代表3.1416。对程序编译前,预处理器先对PI进行处理,把所有PI全部换为3.1416。这种用一个符号名代表一个常量的,称为符号常量。在预编译后,符号常量全部变成字面常量(3.1416)。

那么使用符号常量有什么好处呢?

1.含义清楚。从PI我们就知道它代表圆周率。
2.在需要改变程序中多出用到的同一个常量时,能做到“一改全改”。例如程序中多处用到猪肉价格30,如果我们没有使用符号常量PRICE,那么下次我们在改动时要去程序的各个地方进行改动。相反,如果我们用了PRICE,那么下次我们要修改猪肉价格时,直接修改PRICE的值即可。

注意:区分符号常量和变量,不要把符号常量误认为变量。符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。

(2)常变量:方法是在定义变量时,前面加一个关键字const,如:

const int a=3;
定义a为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。

常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。

常变量与符号常量有什么不同?如:

#define PI 3.1415926 //定义符号常量
const float pi=3.1415926; //定义定义常变量

符号常量PI和常变量pi都代表3.1415926,在程序中都能使用.但二者的性质不同:定义符号常量用#define指令,它是预编译指令,知识用符号常量代表一个字符串,在预编译时候仅进行字符替换,在预编译后,符号常量就不存在了(全置换成3.1415926了),对符号常量的名字是不分配存储单元的.而常变量要占用存储单元,有变量值,知识该值不变而已.

注意:常变量具有符号常量的优点,使用更方便.有了常变量后,可以不必多用符号常量.

你可能感兴趣的:(C++常用知识,c++)