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 回答