Symbolic constant vs Constant variable

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 定义常变量。

你可能感兴趣的:(Symbolic constant vs Constant variable)