为什么这一题会报错啊?


#include <stdio.h>
void max(int *p,int *r,int *c,int *max)
{
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
        {
            if(*(*(p+i)+j)>max)
            {
                *r=i;
                *c=j;
                max=*(*(p+i)+j);
            }
        }
    }
}
int main()
{
    int t[3][4];
    int (*p)[4];
    p=t;
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
        scanf("%d",&t[i][j]);
    }
    int row=0,column=0,max=0;
    max(p,&row,&column,&max);//这个地方会报错,好像是指针传输的问题
    printf("max=%d\nrow=%d\ncolumn=",max,row,column);
}

https://pintia.cn/problem-sets/1498493386138501120/problems/1498493662673936391

修改见注释,供参考:

#include <stdio.h>
void max_m(int(*p)[4],int *r,int *c,int *max)
//void max(int *p,int *r,int *c,int *max)
{
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
        {
            if(*(*(p+i)+j) > *max) //if(*(*(p+i)+j)>max)
            {
                *r=i;
                *c=j;
                *max=*(*(p+i)+j); //max=*(*(p+i)+j);
            }
        }
    }
}
int main()
{
    int t[3][4];
    int (*p)[4];
    p=t;
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
        scanf("%d",&t[i][j]);
    }
    int row=0,column=0,max=0;
    max_m(p,&row,&column,&max);//这个地方会报错,好像是指针传输的问题
    printf("max=%d\nrow=%d\ncolumn=%d",max,row,column);
    //printf("max=%d\nrow=%d\ncolumn=",max,row,column);
 
    return 0;
}