首页 > 解决方案 > 我可以使用常量定义数组的长度,那么为什么 int d[b] 不起作用?

问题描述

int a = 5;
const int b = a, c = 4;

int e[a];
int d[b];
int f[c];

的定义f[c]是有效的。
该变量b也是一个常量int,但编译器给了我错误“表达式必须有一个常量值”的行int d[b]b和 和有什么区别c

标签: c++

解决方案


b和c有什么区别?

c 有一个编译时常量初始化器,而 b 没有。带有编译时常量初始化器的 const 对象本身就是一个编译时常量值。

既然我可以使用一个常数来定义一个数组的长度,那么为什么这不起作用呢?

不是任何常数都可以。const限定符意味着运行时常量(即该值可以在运行时确定,但不会在对象的整个生命周期内改变)。只有编译时常数值可以用作数组大小。


推荐阅读