我有已知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)'|
答案 0 :(得分: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
。
答案 1 :(得分: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;
}