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

C++使用for循环输入二维数组时代码无法进入计算环节求助

异常原因
  • 数组下标越界访问:C/C++的数组索引从0开始计数,你定义的int arr[dim1][dim2]第一维合法索引范围是0 ~ dim1-1,第二维合法索引范围是0 ~ dim2-1。你的循环逻辑使用i=1; i <= dim1、j=1; j <= dim2的遍历规则,当i等于dim1、j等于dim2时已经超出数组的合法访问边界,触发未定义行为,会出现程序卡死、数据乱码、直接崩溃等问题,自然无法执行后续计算逻辑。
  • 使用非标准C++特性:C++标准不支持运行时变量作为静态数组的长度,int arr[dim1][dim2]属于C99引入的变长数组(VLA)特性,仅部分编译器(如GCC)作为非标准扩展支持,代码兼容性很差;同时静态数组分配在栈空间,若dim1、dim2数值较大,会直接触发栈溢出。
修复方案

调整遍历索引的起始和终止条件,同时使用C++标准的动态容器替代非标准的变长数组,修复后的完整代码如下:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int dim1, dim2;
    cout << "Enter first dimension: ";
    cin >> dim1;
    cout << endl << "Enter second dimension: ";
    cin >> dim2;
    // 用vector构造二维动态数组,兼容所有标准C++编译器
    vector<vector<int>> arr(dim1, vector<int>(dim2));
    
    // 索引从0开始遍历
    for (int i = 0; i < dim1; i++) {
        for (int j = 0; j < dim2; j++) {
            cin >> arr[i][j];
        }
    }
    for (int i = 0; i < dim1; i++) {
        for (int j = 0; j < dim2; j++) {
            cout << arr[i][j] << ' ';
        }
        cout << endl;
    }

    // 后续计算逻辑可在此处添加
    return 0;
}

如果需要使用原生指针实现动态二维数组,也可以使用以下方式:

#include <iostream>
using namespace std;

int main() {
    int dim1, dim2;
    cout << "Enter first dimension: ";
    cin >> dim1;
    cout << endl << "Enter second dimension: ";
    cin >> dim2;
    // 手动申请二维动态数组
    int **arr = new int*[dim1];
    for (int i = 0; i < dim1; i++) {
        arr[i] = new int[dim2];
    }
    
    for (int i = 0; i < dim1; i++) {
        for (int j = 0; j < dim2; j++) {
            cin >> arr[i][j];
        }
    }
    for (int i = 0; i < dim1; i++) {
        for (int j = 0; j < dim2; j++) {
            cout << arr[i][j] << ' ';
        }
        cout << endl;
    }

    // 使用完手动释放内存,避免泄漏
    for (int i = 0; i < dim1; i++) {
        delete[] arr[i];
    }
    delete[] arr;
    
    // 后续计算逻辑可在此处添加
    return 0;
}

内容的提问来源于stack exchange,提问作者King Kint 2016

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:27:02