我有一个矩阵M[2][2]
,想调用函数dontModify(M)
来处理 M 的元素但不改变它们。就像是:
dontModify(M):
swap off-diagonal elements;
take determinant of M;
return determinant;
...但在此过程中没有功能更改 M 。有什么方便的方法可以做到这一点?
在函数内创建矩阵的本地副本,您可以随心所欲地使用它。
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` */
...
}
坦率地说,不要理解你的问题。您正在使用矩阵,因此它将通过指向函数的指针传递。因此,只需创建矩阵的副本,使用它,在返回之前销毁副本。如果此调用非常频繁,您可以尝试节省一些时间并就地工作,只是不要忘记在返回之前将非对角线元素交换回来。