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

仅用指针实现C++二维数组传参并修复退出码-1073741819报错

问题解决方案

错误原因

你遇到的崩溃属于内存访问违例错误,退出码-1073741819对应Windows平台的段错误,核心问题是类型转换逻辑错误:

C++ 中的静态二维数组int x[3][2]是连续存储的整块内存,并非由int*指针构成的数组。你将其强制转为int**后,*(x+i)操作会把数组中存储的实际整数值(如11、15等)当做内存地址进行解引用,直接触发非法访问导致程序崩溃。

修改点说明

  • 将函数参数从int** x改为int* x,匹配静态二维数组连续存储的特性,避免使用x[][2]或*x[]形式的数组参数声明
  • 元素访问改为手动计算偏移的指针解引用形式,完全不使用[]索引语法
  • 调用函数时将二维数组首地址转为int*传递,不再使用错误的int**强制转换

可运行代码

#include <iostream>
using namespace std;

void sum(int *x) {
    int s = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            cout << *(x + i * 2 + j) << " ";
            s += *(x + i * 2 + j);
        }
        cout << "\n";
    }
    cout << s;
}

int main() {
    int x[3][2] = { {11,15},{19,28},{5,8} };
    sum((int*)x);
    return 0;
}

运行输出

11 15 
19 28 
5 8 
86

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:07