c++ - myArray[N] 其中 N = 1,000,000 返回错误,而 myArray[1,000,000] 不返回
问题描述
文件扩展名:.cpp
我有以下代码:
int main() {
int N; cin >> N;
int myArray[N];
return 0;
}
如果我将 N 输入为 1,000,000,则在尝试运行该程序时会出现错误。但是,当我设置myArray[N]
为时myArray[1000000]
,它没有。为什么会这样?
解决方案
int myArray[N];
在 C++ 中无效。这种行为是在 C99 中引入的,但从未在 C++ 中引入,可能是因为它会导致在幕后发生很多丑陋的事情以使其正常工作,并且因此会降低生成的代码的效率。事实上,这个特性甚至在 C11 中被逆转,它的支持只是可选的,不再是强制性的。改为使用std::vector<int>
,或您选择的任何类似标准容器。
推荐阅读
- time-series - How to handle multivariate data with varying time lengths in an LSTM?
- c++ - 保留插入顺序的c ++容器
- javascript - For循环似乎在某些范围内不起作用?
- c# - Unable to correctly pass Prism IEventaggregator object via WCF service
- node.js - 如何在节点js中向azure服务总线队列发送消息时将内容类型指定为application/json?
- javascript - 我将一个元素推入了 Array[0] 位置,但是结果并没有达到我的预期。我的元素最终位于位置 Array[1],而不是 Array[0]
- python - 通过一对(行,列)值分配熊猫数据框
- html - 如何根据页面上的 div 数量重复/传播背景图像?
- docker - 如何在不指定 HTTP 端口的情况下访问 Docker 容器?
- c - 检查结构元素并将其与 C 中的用户输入进行比较