如何用独立函数打印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
相关产品推荐
相关产品推荐

