【问题标题】:How can I pass a matrix from a subprogram into main()?如何将矩阵从子程序传递到 main()?
【发布时间】:2020-04-27 22:08:16
【问题描述】:

在下面的代码中,有一个原型为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];  
  }
}

【问题讨论】:

    标签: c matrix transpose


    【解决方案1】:

    数组衰减为指向其第一个元素的指针。

    如果你有一个简单的数组,比如

    float simple_array[SIZE];
    

    然后它将衰减(如&amp;simple_array[0])为float *类型。

    如果数组中的每个元素又是一个数组,那么衰减只发生在第一级,你仍然会得到一个指向“外部”数组的第一个元素的指针。这将是一个指向数组的指针。

    所以对于像这样的数组

    float A[n][m];
    

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

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

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

    【讨论】:

    • 非常感谢@Someprogrammerdude!我刚刚编辑了我的问题以合并您的 cmets,然后试一试。但是,我仍在努力让它发挥作用。您是否有机会更新您的答案以便我完成此操作?非常感谢!!
    • @Henry 首先,不要编辑您的问题以包含来自答案的修复。这将使问题和答案都毫无用处(请阅读What should I do when someone answers my question?)。其次,transposed_matrix 仍然是一个函数,您必须以正常方式调用它,如transposed_matrix(n, m, A)。要获取A 的各个元素,您可以像平常一样使用A[i][j]
    • 你是对的@Someprogrammerdude,为编辑问题道歉!我会试一试并彻底考虑它,因为我似乎还无法弄清楚。如果您碰巧能够编辑我的代码以使其运行,那就太好了。如果您将其粘贴到您的第一个答案中,我可以接受它作为最终解决方案。再次感谢您的所有帮助:-)
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多