illegal use of pointer
小弟初学编程,编译提示非法使用指针,请大家多多指点程序功能是把二维数组中最大的放在中间,最小的放在第一个位置,第二小的放在第5个位置
#include <stdio.h>
int main()
{
int a[5][5],*pointer,i,j,k;
printf("Input the matricx:\n");
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
scanf("%d",&a[i][j]);
}
}
pointer=&a[0][0];
Change(pointer);
printf("Now matrix:\n");
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
Change(int *p)
{
int i,j,temp;
int *pMax, *pMin;
pMax=pMin=p;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
if(*pMax < *(p+5*i+j))
pMax=p+5*i+j;
if(*pMin > *(p+5*i+j))
pMin=p+5*i+j;
}
}
temp=*(p+12); //最大的放到中间
*(p+12)=*pMax;
*pMax=temp;
temp=*p; //最小的放到第一个位置
*p=*pMin;
*pMin=temp;
pMin=p+1;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
if((*(p+i*5+j) < *pMin)
&& ((p+5*i+j) != p))
pMin=p+i*5+j;
}
}
temp=*pMin;
*pMin=*(p+4) //非法使用指针!!!
*(p+4)=temp;
}