c++ - 我可以使用常量定义数组的长度,那么为什么 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
?
解决方案
b和c有什么区别?
c 有一个编译时常量初始化器,而 b 没有。带有编译时常量初始化器的 const 对象本身就是一个编译时常量值。
既然我可以使用一个常数来定义一个数组的长度,那么为什么这不起作用呢?
不是任何常数都可以。const
限定符意味着运行时常量(即该值可以在运行时确定,但不会在对象的整个生命周期内改变)。只有编译时常数值可以用作数组大小。
推荐阅读
- image - wx python图像质量下降
- c# - 如何使用新数据更新 razorPage 异步
- python - 测试创建的函数图返回无
- ruby - Webservice打包成Docker镜像后不工作
- r - crr 模型的受限三次样条 (cmprsk)
- json - 将 adminPassword 参数从 JSON 模板传递到 PS 脚本 Switch
- google-cloud-pubsub - 如果设置得太低,则“推送订阅者吞吐量”的 Cloud PubSub 配额不适用
- .net-core - MassTransit saga azure 服务总线接收端点设置?
- f# - 如何在 f# 中获得此签名: val sigF : int -> bool -> float -> string
- powershell - 如何使用 Remove-LocalGroupMember 从服务器中删除?