用指针兑现 求二维数组所有元素中的最小值

用指针实现 求二维数组所有元素中的最小值。
这是我写的功能函数,编译通过了,老师说不对,要重写,望高手指教
#include <stdio.h>
#include "function.h"

int min_2(int *p, int num)
{
int min;
int a[4][5];
int i, j;
min = **a;
       for(i = 0; i < 4; i++){
       for(j = 0; j < 5; j++){       
       if(*(*(a+i)+j) < min){
min = *(*(a+i)+j);
       
        }
       }
       }
return min;
}

------解决方案--------------------


int min_2(int *p, int num)
{
int min;
//int a[4][5];


int i, j;
p = malloc(sizeof(int) * num);

for(i = 0; i<num; i++)
{
//initialize code
}
min = **a;
       for(i = 0; i < 4; i++){
       for(j = 0; j < 5; j++){       
       if(*(*(a+i)+j) < min){
min = *(*(a+i)+j);
       
        }
       }
       }
return min;
}

------解决方案--------------------

int min_2(int *p, int num)
{
    int min;
    int i;
    min = *p;
    for(i = 0; i < num; i++)
    {
        if(*(p + i) < min)
            min = *(p + i);
    }
    return min;
}

------解决方案--------------------
int min_2(int *p, int num)
{
int i, min = p[0];
       for(i = 1; i < num; i++){   
       if(p[i] < min) min = p[i];       
       }
return min;
}

------解决方案--------------------

//接口实现
int min_2(int *p, int num)
{
    int min = *p;
    for(int i = 1; i < num; i++)
    {
        if(*(p + i) < min)
            min = *(p + i);
    }

    return min;
}


------解决方案--------------------