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

C++整数数组遍历异常:循环越界输出非法值求解决方案

解决C++数组遍历循环越界问题

你的代码核心问题是循环条件错误导致数组索引越界:

  • 数组arr包含5个元素,合法索引范围是0到4(数组索引从0开始)
  • 通过sizeof(arr)/sizeof(arr[0])计算出的size值为5,当循环条件用i <= size时,i会取到5,此时访问arr[5]属于越界访问,会读取到内存中的随机垃圾值。

直接修改方案

把循环条件的<=改为<即可,修正后的完整代码:

#include <iostream>

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    for (int i = 0; i < size; i++)
    {
        std::cout << arr[i] << std::endl;
    }
    
    return 0;
}

如果修改后仍有问题,检查是否重新编译了代码,或者是否在其他地方修改了数组/size的值。

更安全的现代C++写法

推荐使用范围for循环,无需手动计算数组长度,自动遍历所有元素,彻底避免索引越界问题:

#include <iostream>

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    
    for (int num : arr)
    {
        std::cout << num << std::endl;
    }
    
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:37:04