Symbolic constant, 符号常量
注意:
符号常量虽然有名字,但它不是变量。它的值不能被改变,也不能被赋值。
其好处有二:
- 含义清楚,知名见意。
- 需要改变一个常量时能做到一改全改。
在程序编译时,先对预处理命令进行处理,把程序中凡有 PRICE的地方全部替换成30.
#define PRICE 30
int main() {
int num = 10;
int total = num * PRICE;
cout << "Total = " << total << endl;
return 0;
}
Note: There's no precompiler in Java.
You could achieve the same thing as follows:
class MyClass
{
private static final int PROTEINS = 0;
...
MyArray[] foo = new MyArray[PROTEINS];
}
Constant variable, 常变量
在定义变量时,加上关键字 const,变量的值在程序运行期间不能改变,称为常变量。
const int a = 3; // 指定其值永远为3
在定义常变量时必须同时对它初始化,此后它的值不能再改变。
常变量是基于应用需要的角度提出的,例如有时要求某些变量的值不允许改变,如函数的参数,这时就用 const 加以限定。
#define 命令定义的符号常量和用 const 定义的常变量的区别
符号常量只是用一个符号代替一个字符串,在编译时把所有的符号常量替换为指定的字符串,它没有类型,在内存中不存在以符号常量命名的存储单元。而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,可用 sizeof 运算符测出其长度。
用#define 命令定义符号常量是 C 语言所采用的方法,C++把它保留下来是为了兼容。C++的程序员一般喜欢用 const 定义常变量。