二维数组传参传不过去想知道怎么改

编写函数找出二维数组(5*4)中元素的最大值与最小值,并返回其最大值与最小值。测试结果。


#include<bits/stdc++.h>
using namespace std;
void fun(int data[5][4])
{
    int max=data[0][0];
    int min=data[0][0];
    for(int i=0;i<5;i++){
        for(int j=0;j<4;j++){
            if(data[i][j]>max)
             max=data[i][j];
            if(data[i][j]<min)
             min=data[i][j];
        }
    }
    cout<<"max:"<<max<<endl;
    cout<<"min:"<<min<<endl;
}
int main()
{
    int a[1024][1024]={0};
    for(int i=0;i<5;i++){
        for(int j=0;j<4;j++){
            cin>>a[i][j];
    }
}
    fun(a);
    return 0;
}


二维数组传递函数参数列必须固定
a[1024][1024]改成a[1024][4]

void fun(int data[5][4]);
void fun(int data[][4]);
下面这样就是错误的
void fun(int data[][]);

#include<iostream>
using namespace std;
void fun(int data[5][4])
{
    int max = data[0][0];
    int min = data[0][0];
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 4; j++) {
            if (data[i][j] > max)
                max = data[i][j];
            if (data[i][j] < min)
                min = data[i][j];
        }
    }
    cout << "max:" << max << endl;
    cout << "min:" << min << endl;
}
int main()
{
    int a[1024][4] = { 0 };
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 4; j++) {
            cin >> a[i][j];
        }
    }
    fun(a);
    return 0;
}