You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++查找数组最大值时数组的正确声明方式及声明位置异常问题

问题原因

  • 第8行声明int arr[n]时,变量n仅完成了定义还未被赋值,此时n的取值是内存残留的随机垃圾值,数组会按照这个不可预期的大小完成分配。后续执行cin >> n给n赋值的操作,并不会修改已经分配完成的数组长度,后续读写数组元素时大概率触发越界访问,属于C++的未定义行为,就会出现编译无错但运行结果异常的情况。
  • 补充说明:int arr[n]这种用变量指定数组长度的写法叫做变长数组(VLA),属于C99标准的特性,并不属于标准C++的语法要求,仅部分编译器(如GCC)做了扩展支持,所以你的代码可以编译通过,但换用其他符合C++标准的编译器可能直接编译失败。

推荐写法

如果要符合标准C++规范,建议使用标准库的动态数组容器std::vector替代原生数组,示例修改如下:
删除第8行的数组声明,在cin >> n之后添加如下代码即可:

vector<int> arr(n);

这种写法不需要依赖编译器扩展,具备全平台兼容性。


内容的提问来源于stack exchange,提问作者Ashish Kushwaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:09:03