将指针传递给函数而不修改参数?

时间:2013-02-15 08:20:04

标签: c function

我有一个矩阵M[2][2],想要调用函数dontModify(M),它将使用M的元素但不会更改它们。类似的东西:

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

...但是在此过程中没有功能改变M.有什么方便可以实现这个目标吗?

2 个答案:

答案 0 :(得分: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` */

    ...
}

答案 1 :(得分:0)

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