首页 > 解决方案 > 如何在 C 中创建一个将二维矩阵作为参数(并对其进行修改)的函数?

问题描述

我正在尝试制作一个函数来计算整数矩阵的转置。该函数采用矩阵的两个维度,即 d1 和 d2,以及矩阵本身,名为 arr,以及一个名为 dest 的矩阵,它将是转置。这是我尝试使用的代码:

void transpose(size_t d1, size_t d2, int arr[d1][d2], int dest[d2][d1])
{
    for (size_t i = 0; i < d1; i++)
    {
        for (size_t j = 0; j < d2; j++)
        {
            dest[j][i] = arr[i][j];
        }
    }
}

这是我尝试编译时得到的结果:

Exercicios\source\9.52.c:5:48: error: use of parameter outside function body before ']' token
 void transpose(size_t d1, size_t d2, int arr[d1][d2], int dest[d2][d1])
                                                ^
Exercicios\source\9.52.c:5:52: error: use of parameter outside function body before ']' token
 void transpose(size_t d1, size_t d2, int arr[d1][d2], int dest[d2][d1])
                                                    ^
Exercicios\source\9.52.c:5:53: error: expected ')' before ',' token
 void transpose(size_t d1, size_t d2, int arr[d1][d2], int dest[d2][d1])
               ~                                     ^
                                                     )
Exercicios\source\9.52.c:5:55: error: expected unqualified-id before 'int'
 void transpose(size_t d1, size_t d2, int arr[d1][d2], int dest[d2][d1])

看到这里,可能有人会说我根本不能在另一个参数中使用一个参数的值,这也是我的想法,但是,这个函数似乎可以在在线编译器上工作,并将参数用作其他参数的维度在另一个问题上提出了论点,以及一些文章在这里和那里,所以它必须(有点)正确。即使那样,它在我的编译器(mingw-w64)上也不起作用,所以我希望有人能帮我解决这个问题。

标签: cfunctionmultidimensional-arrayparameter-passingtranspose

解决方案


推荐阅读