对于的矩阵,使用两个指针变量,可以方便实现(i,j)处元素与(j,i)处元素交换位置。令指针Arow=&Ai0,则Arowj可实现对第i行j列元素的访问。令指针Bptr=&A0i,则*Bptr就可以访问(0,i)处元素,然后,令Bptr+=M,就可访问同列不同行的元素。
代码实现
#define M 3
int A33={{1,2,3},{4,5,6},{7,8,9}};
void transpose(int AMM);
void transpose(int AMM)
{
int i,j;
int t;
int *Arow;
int *Bptr;
for(i=0;i<M;i++)
{
Arow=&Ai0;
Bptr=&A0i;
for(j=0;j<i;j++)
{
t=Arowj;
Arowj=*Bptr;
*Bptr=t;
Bptr+=M;
}
}
}
void main()
{
int BMM;
int i,j;
for(i=0;i<M;i++) //把A矩阵元素存储在B矩阵中
for(j=0;j<M;j++)
Bij=Aij;
transpose(A); //把A矩阵转置
}
运行结果