3

小さなC++の例で以下に示すコードに出くわしました:

int (*arr1)[ARRAY_SIZE];
int (*arr2)[ARRAY_SIZE];
int (*arr3)[ARRAY_SIZE];

次に、クラスのコンストラクターで:

ParallelMultiply::ParallelMultiply(int mat1[ARRAY_SIZE][ARRAY_SIZE],

                   int mat2[ARRAY_SIZE][ARRAY_SIZE], 

                   int result_mat[ARRAY_SIZE][ARRAY_SIZE]):arr1(mat1), 

                   arr2(mat2), 

                   arr3(result_mat)
{

}

ここで、ParallelMultiply はクラス、mat1、mat2、result_mat は 2 次元配列、ARRAY_SIZE は定義された配列の長さです。しかし、どうすれば arr1、arr2、arr3 を 2 次元配列で初期化できますか?? 説明してください。

ありがとうございました!!

4

2 に答える 2

1

配列がポインターに減衰し、そのポインターを配列のように使用できる方法に精通している場合があります (実際の範囲がわかっている場合)。

この種のことを多次元配列に対して行うと、バインドされた配列が 1 つ少ない配列へのポインターが得られます。次に、そのポインターを多次元配列のように使用できます。

したがってarr1[i][j]、 とmat1[i][j]は同じintで、同じアドレスを持っています。

クラスは 2D 配列へのポインターのみをコピーしているため、ユーザーはこれらの配列引数の有効期間が十分に長いことを確認する必要があることに注意してください。また、クラスを介して行われた変更は、元の配列に適用されます。

于 2011-03-29T12:43:07.137 に答える
0

arr1, arr2arr3はポインターです。size の配列を指す各ポインターARRAY_SIZE

于 2011-03-29T12:27:05.653 に答える