我想将函数传递给函数,在这种情况下,传递函数具有用于输入的2D数组。
对于1D阵列,我这样做了:
void bungee(double Y[], double DY[])
{
// ...
}
void euler(void(ODES)(double[], double[]), double A[], double STEP)
{
// ...
ODES(A, B);
}
int main()
{
// ...
euler(bungee, y, dt);
return 0;
}
现在我想通过2D数组输入将蹦极传递给euler,如下所示:
void bungee(double Y[][], double DY[][])
{ // ... }
void euler(void(ODES)(double[][], double[][])/*,...*/)
{ // ... }
int main()
{
euler(bungee);
return 0;
}
答案 0 :(得分:1)
对于二维数组,在传递函数时必须提供内部维度。
因为如果你传递双Y [] [],它将被转换为double(* Y)[],这是一个不完整的类型。
相反,双Y [] [50],将被转换为double(* Y)[50],这很好。
对于N维数组,必须提供内部N-1维度。
例如,双Y [] [10] [20] [30]。
答案 1 :(得分:0)
与针对连续数组所解释的user534498类似,例如
void bungee(double [][50]);
void main()
{
double array[100][50];
bungee(array);
}
但是如果您像这样创建2D数组
double **arr = new double* [100];
for (int i=0; i<100; i++)
arr[i] = new double [50];
你必须使用
void bungee(double **);