c语言指针相关问题求解

img

img


显示的error和warning是什么meaning啊?为什么不正确啊?

你函数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;
}