行列があり、Mの要素を操作するが、それらを変更しないM[2][2]
関数を呼び出したいと思います。dontModify(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` */
...
}
率直に言って、あなたの問題を理解していません。あなたは行列を扱っているので、関数へのポインタを介して渡されます。したがって、マトリックスのコピーを作成し、それで遊んで、コピーを破棄してから戻ってください。この呼び出しが非常に頻繁になる場合は、時間を節約してその場で作業することができますが、戻る前に非対角要素を元に戻すことを忘れないでください。