1. ホーム
  2. c++

[解決済み] C++の関数に2次元配列を渡す

2022-03-25 16:23:36

質問

パラメータとして可変長の2次元配列を受け取る関数があります。

今のところ、こんな感じです。

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

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

double anArray[10][10];

しかし myFunction(anArray) がエラーになります。

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

どのように解決するのですか?

2次元配列を関数に渡すには、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);