3

したがって、私のプログラムでは、2D 配列を渡す関数があり、その 2D 配列に等しい別の 2D 配列を設定したいと考えています。これを C++ でコーディングしていますが、正しい構文を取得できません。現在、私は次のものを持っています:

void MyFunction(float **two_d_array){
    float newArray[4][4];
    //Set new array equal to two_d_array
}

two_d_array も常に 4x4 になるため、寸法自体は問題になりません。

4

3 に答える 3

6

関数への double ポインターとして 2 次元配列を渡していないことを願っています。

とにかく、あなたはただ書くことができます

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
        newArray[i][j] = two_d_array[i][j];

別の 2 次元配列 (ポインターの配列ではないmemcpy()) がある場合は、次のように単純に使用します。

void foo(float arr[][4])
{
    float newArray[4][4];
    memcpy(newArray, arr, sizeof(newArray));
}
于 2013-06-01T06:12:58.760 に答える
1

2 次元配列を次のように定義すると、

float a[4][4]

その型は float [4][4] です。

float** を関数に渡したい場合は、float** で作成できます

float** f = (float**) malloc(sizeof(float *)*4);
    for(int i=0;i<4;i++){
      f[i] = (float*) malloc(sizeof(float)*4);
    }
//initialize
MyFunction(f);

そして Myfunction は似ています

void MyFunction(float **two_d_array){
    float newArray[4][4];
    for(int i=0;i<4;i++){
        float* one_d = & two_d_array[i][0];
        for(int j=0;j<4;j++){
            newArray[i][j] = one_d[j];
        }   
    }

}
于 2013-06-01T09:08:09.310 に答える