你函数FindMax中对一个指针p进行p[0][0] ,是不可以的,所以报错。
二维数组作为形参,不是那样写。
如果你要传二维数组 ,直接 将形参 int * p改成如 int p[5][6]
改动处见注释,供参考:
#include <stdio.h>
#define M 10
#define N 10
void InputArray(int *p,int m,int n);
int FindMax(int *p,int m,int n,int *pRow,int *pCol);
int main()
{
int a[M][N],k,p,m,n,q;
scanf("%d %d", &m, &n);
InputArray(a[0],m,n); //修改
k = FindMax(a[0],m,n,&p,&q); //修改
printf("max:a[%d][%d]=%d", p, q, k); //修改
return 0;
}
void InputArray(int *p,int m,int n)
{
int i,j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
scanf("%d", (p+i*n+j)); //修改
}
}
int FindMax(int *p,int m,int n,int *pRow,int *pCol)
{
int i,j,max=*p; //修改
for (i = 0;i < m; i++)
{
for (j = 0;j < n; j++)
{
if (max < *(p+i*n+j)) //修改
{
max = *(p+i*n+j); //修改
*pRow = i; //修改
*pCol = j; //修改
}
}
}
return max;
}