2D配列をC++関数に渡す 質問する

2D配列をC++関数に渡す 質問する

可変サイズの 2D 配列をパラメータとして受け取りたい関数があります。

これまでのところ、私はこれを持っています:

void myFunction(double** myArray){
     myArray[x][y] = 5;
     etc...
}

そして、コード内の別の場所で配列を宣言しました。

double anArray[10][10];

しかし、呼び出すとmyFunction(anArray)エラーが発生します。

配列を渡すときに、配列をコピーしたくありません。 で行われた変更は、myFunctionの状態を変更しますanArray。正しく理解していれば、2D 配列へのポインターを引数として渡すだけです。関数は、異なるサイズの配列も受け入れる必要があります。たとえば、[10][10]および です[5][5]。どうすればこれを実行できますか?

ベストアンサー1

2D 配列を関数に渡す方法は 3 つあります。

  1. パラメータは2次元配列です

    int array[10][10];
    void passFunc(int a[][10])
    {
        // ...
    }
    passFunc(array);
    
  2. パラメータはポインタを含む配列である

    int *array[10];
    for(int i = 0; i < 10; i++)
        array[i] = new int[10];
    void passFunc(int *a[10]) //Array containing pointers
    {
        // ...
    }
    passFunc(array);
    
  3. パラメータはポインタへのポインタである

    int **array;
    array = new int *[10];
    for(int i = 0; i <10; i++)
        array[i] = new int[10];
    void passFunc(int **a)
    {
        // ...
    }
    passFunc(array);
    

おすすめ記事