c - 如何将矩阵从子程序传递到 main()?
问题描述
在下面的代码中,有一个带有原型的子程序float transposed_matrix(int n, int m, float (*a)[m]);
,我试图通过它将其结果传递给主程序:转置矩阵。这样我就可以从main()
. 有人可以帮我完成代码吗?非常感谢你!:-)
#include <stdio.h>
#define R 2
#define C 3
float transposed_matrix(int n, int m, float (*a)[m]);
int main(void)
{
int n=2,m=3;
int i,j;
float A[n][m],&transposed_matrix[i][j];
puts("Enter the values of the matrix:");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("A[%d][%d]=",i,j);
scanf("%f",&A[i][j]);
}
puts("\nThe transposed matrix is:");
transposed_matrix(n, m, A[R][C], &transposed_matrix[i][j])
for(i=0;i<R;i++)
{
for(j=0;j<C;j++)
printf("%6.2f",transposed_matrix[i][j]);
printf("\n");
}
return 0;
}
float transposed_matrix(int n, int m, float A[R][C], float (*b)[m])
{
int i,j;
for(i=0;i<C;i++)
{
for(j=0;j<R;j++)
(*b)[m]=A[j][i];
}
}
解决方案
数组衰减为指向其第一个元素的指针。
如果您有一个简单的数组,例如
float simple_array[SIZE];
然后它会衰减(as &simple_array[0]
)到 type float *
。
如果数组中的每个元素又是一个数组,那么衰减只发生在第一级,你仍然会得到一个指向“外部”数组的第一个元素的指针。这将是一个指向数组的指针。
所以对于像这样的数组
float A[n][m];
然后它将衰减(仍在使用&A[0]
)类型float (*)[m]
。
请记住,您需要将数组的大小传递给函数,transposed_matrix
声明可能如下所示:
float transposed_matrix(int n, int m, float (*a)[m]);