如何将矩阵从子程序传递到 main()?

How can I pass a matrix from a subprogram into 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];

然后它将衰减(如&simple_array[0])到类型float *

如果数组中的每个元素都是一个数组,那么衰减只发生在第一级,你仍然得到一个指向 "outer" 数组第一个元素的指针。这将是一个指向数组的指针。

所以对于像

这样的数组
float A[n][m];

然后它将衰减(仍然使用 &A[0])到类型 float (*)[m]

请记住,您需要将数组的大小传递给函数,transposed_matrix 声明可能如下所示:

float transposed_matrix(int n, int m, float (*a)[m]);