1、当我们使用二维数组作为参数传递的时候,所传递的二维数组的第二项必须为一个常数,否则编译不能通过,如int a[][3];
例如:
#include<stdio.h>
#define N 3
int turn(int a[][N]) //注意此处
{
int i,j,temp;
temp=0;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
if(i<j)
{
temp =a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
}
}
int main()
{
int a[3][3]= {{12,2,8},{22,16,4}, {10,6,14}};
int i,j;
turn(a);
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
2、一维数组指针作为形参传递,如int (*a)[3],其实二维数组就相当于一位数组的指针,所以这样也是可以的。
#include<stdio.h>
#define N 3
int turn(int (*a)[N]) //注意此处
{
int i,j,temp;
temp=0;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
if(i<j)
{
temp =a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
}
}
int main()
{
int a[3][3]= {{12,2,8},{22,16,4}, {10,6,14}};
int i,j;
turn(a);
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}