0

行列があり、Mの要素を操作するが、それらを変更しないM[2][2]関数を呼び出したいと思います。dontModify(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 に答える