c语言,cannot convert parameter 1 from 'int [3][3]' to 'int *',怎么改都搞不定
/*写一个函数,将一个3x3的矩阵转置*/#include<stdio.h>
int main()
{
void trans(int *p);
int a[3][3]={1,2,3,4,5,6,7,8,9},i,j,*p;
printf("%d\n",a);
p=a; //把a的地址给p。这点有问题???
trans(p);
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void trans(int *p)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
t=*(p+i*3+j);
*(p+i*3+j)=*(p+j*3+i);
*(p+j*3+i)=t;
}
}
C:\Users\Administrator\Desktop\P291-9.CPP(8) : error C2440: '=' : cannot convert from 'int [3][3]' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.
P291-9.OBJ - 1 error(s), 0 warning(s)
这样写也不对.....
/*写一个函数,将一个3x3的矩阵转置*/
#include<stdio.h>
int main()
{
void trans(int *p);
int a[3][3]={1,2,3,4,5,6,7,8,9},i,j;
printf("%d\n",a); //直接用a作实参
trans(a);
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void trans(int *p)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
t=*(p+i*3+j);
*(p+i*3+j)=*(p+j*3+i);
*(p+j*3+i)=t;
}
}
C:\Users\Administrator\Desktop\P291-9.CPP(8) : error C2664: 'trans' : cannot convert parameter 1 from 'int [3][3]' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.
P291-9.OBJ - 1 error(s), 0 warning(s)
这两写法错在哪呢?求教。