0

我有一个矩阵M[2][2],想调用函数dontModify(M)来处理 M 的元素但不改变它们。就像是:

dontModify(M):
   swap off-diagonal elements;
   take determinant of M;
   return determinant;

...但在此过程中没有功能更改 M 。有什么方便的方法可以做到这一点?

4

2 回答 2

3

在函数内创建矩阵的本地副本,您可以随心所欲地使用它。


int some_function(int matrix[2][2])
{
    int local_matrix[2][2] = {
        { matrix[0][0], matrix[0][1] },
        { matrix[1][0], matrix[1][1] },
    };

    /* Do things with `local_matrix` */
    /* Do _not_ use `matrix` */

    ...
}
于 2013-02-15T08:22:23.580 回答
0

坦率地说,不要理解你的问题。您正在使用矩阵,因此它将通过指向函数的指针传递。因此,只需创建矩阵的副本,使用它,在返回之前销毁副本。如果此调用非常频繁,您可以尝试节省一些时间并就地工作,只是不要忘记在返回之前将非对角线元素交换回来。

于 2013-02-15T08:28:29.363 回答