请问一下具体思路以及函数原型的意义

编写一个函数,在该函数中找出二维数组中的最大值和最小值,在主函数中输入数据给一个三行四列的二维数组赋值,并输出最大最小值。
函数原型:void myFinder(int nData[][4], int *pMax , int *pMin); // pMax 保存最大值,pMin 保存最小值。


#include <stdio.h>

void myFinder(int nData[][4], int *pMax , int *pMin);

int main()
{
    int a[3][4];
    int max,min;
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
            scanf("%d",&a[i][j]);
    }

    myFinder(a,&max,&min);

    printf("%d %d\n",max,min);

    system("pause");
    return 0;
}
void myFinder(int nData[][4], int *pMax , int *pMin)
{
    *pMax=*pMin=nData[0][0];

    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
        {
            if(*pMax<nData[i][j])
                *pMax=nData[i][j];
            if(*pMin>nData[i][j])
                *pMin=nData[i][j];
        }            
    }
    
}