小憨笔记:
①实参做二维数组传递首地址时,形参定义为指向数组的指针,int (*p)[n]
#include "stdio.h"
void main()
{
void reverse(int (*p)[3]);
int a[3][3];
int i,j;
printf("input array:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",*(a+i)+j);
}
}
reverse(a);
printf("reversed:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",*(*(a+i)+j));
}
printf("\n");
}
}
void reverse(int (*p)[3])
{
int i,j,t;
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
t = *(*(p+j)+i);
*(*(p+j)+i) = *(*(p+i)+j);
*(*(p+i)+j) = t;
}
}
}
运行结果:
input array:
1 2 3
4 5 6
7 8 9
reversed:
1 4 7
2 5 8
3 6 9