如何将矩阵从子程序传递到 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]);
在下面的代码中,有一个带有原型 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]);