1

xサイズが既知の配列(5)があり、y変数から取得されるため、配列は次のようになります-array[5][y];

そして今、それを関数に渡す方法にかなり困っています。編集はせず、データを読み取るだけです。

私はこのようなことを考えました:

void someFunction(double **array)

しかし、私は得る

convert error: cannot convert `double (*)[((unsigned int)((int)n))]' to `double**' for argument `2' to `void findMax(int, double**, int)'|
4

2 に答える 2

1

配列 [5][x] の場合

残念ながら、 のような配列の型を定義することはできませんdouble[5][]。多次元配列の最後の次元ではなく、最初の次元のみを省略できます。

配列 [x][5] の場合

あなたは一緒に行くべきvoid someFunction(double array[][5], int size)です。そして、要素を でループしfor (int i = 0; i < size; i++)ます。

例:

void someFunction(double array[][5], int size) {
    for (int k = 0; i < size; i++)
        for (int i = 0; i < 5; i++)
            std::cout << array[k][i] << std::endl;
}


double a[10][5];
// populate data
someFunction(a, 10);

通常std::、生の C 配列の代わりにコンテナーを使用することをお勧めします。

例を見てみましょうstd::vector

于 2013-03-18T13:18:41.133 に答える
0

STLを使用していない場合は、次のこともできます。

void someFunction(double **mat, const int Xsize, const int Ysize )
{
    for(unsigned int i = 0 ; i < Xsize ; ++i)
    {
        for(unsigned int j = 0 ; j < Ysize ; ++j)
        {
            std::cout << ((double *)mat + Ysize * i)[j] << "  " ;
        }
        std::cout << std::endl;
    }

    return ;
}

そして、次のような関数を呼び出します。

int main(int argc, char** argv)
{
    double matrice[2][3] = {{1,2,3},{4,5,6}};
    someFunction( (double**)matrice, 2, 3 );
    return 1;
}
于 2013-03-18T14:42:41.323 に答える