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

如何用独立函数打印readMatrix中存储的二维数组?

二维数组读取与打印代码的问题修复

原代码存在两个核心问题:

  • readMatrix函数内的arr[3][4]是局部变量,函数执行完毕后内存会被释放,printMatrix无法访问到该数组;同时printMatrix内直接使用arr未声明,编译会报错。
  • ptr = &arr;存在类型不匹配问题(&arr是指向3行4列二维数组的指针,而ptr是int*类型),且该指针未实际发挥作用,属于冗余代码。

以下是修正后的实现方案:将数组定义在main函数中,通过参数传递给readMatrix和printMatrix,确保两个函数操作同一个数组:

#include <stdio.h>

// 读取用户输入到二维数组
void readMatrix(int arr[3][4]){
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            printf("row %d, col %d: ", i + 1, j + 1);
            scanf("%d", &arr[i][j]);
        }
    }
}

// 打印二维数组
void printMatrix(int arr[3][4]){
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            printf("row %d, col %d = %d\n", i + 1, j + 1, arr[i][j]);
        }
    }
}

int main(){
    // 在main中定义数组,确保作用域覆盖两个函数
    int arr[3][4];
    
    readMatrix(arr);
    printMatrix(arr);
    return 0;
}

补充说明:

  • 二维数组作为函数参数时,int arr[3][4]等价于int (*arr)[4],编译器会将其视为指向数组的指针。
  • 该修改彻底解决了局部变量销毁导致的访问失效问题,同时消除了未声明变量的编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:56:31