C语言二维数组指针

来源:百度知道 编辑:UC知道 时间:2024/09/21 19:04:33
我发下我写的程序,就是运行不了啊、、、、求哪位能帮我找出错来,编译的时候说是主函数里p=A那个不合法。。。。帮我解释一下啊,谢谢啦

#include<stdio.h>
int Max(int *p1)
{
int i,j,max;
max=*(*p1);
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
if(*(p1+i*6+j)>max)
{
max=*(p1+i*6+j);
}
}
}
return(max);
}
int Min(int *p1)
{
int i,j,min;
min=*(*p1);
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
if(*(p1+i*6+j)<min)
{
min=*(p1+i*6+j);
}
}
}
return(min);
}
void main()
{
int A[5][6]={12,23,4,34,34,67,82,23,45,31,23,23,34,67,87,57,9,23,4,67,80,86,32,16,64,37,91,23,45,52};
int *p,i,j,i1,i2,j1,j2;
p=A;
printf("若数组为:\n");
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
printf("%4d",&A[i][j]);
if(A[i][j]==Max(p))
{
i=i1;j=j1;

函数参数的指针全改为数组。

因为A指向是数组,p指向的是整型变量,二者指向不同,当然不能赋值
应该这样定义int (*p[5])[6];

数组名代表数组的首地址,在传递函数参数时,直接调用数组名即可,故://p=A;Max(A);Min(A)即可。