问我不明白为什么我不能使用const值,例如
const int n = 5; int a[n];
关键字。有人说const限定符实际上是“只读”的意思;一个这样限定的对象是运行时对象,(通常)不能被赋值。因此,一个该const-限定的对象的值在严格意义上*不是*一个常量表达式,也不能用于数组维度、case标签等。(在这方面 C 与 C++ 不同。)当你需要一个真正的编译时常量时,请使用预处理器const#define(或者可能是enum)).
参考文献:ISO Sec. 6.4
H&S Secs. 7.11.2,7.11.3 pp. 226-7