[英]Pass function with 2D array input to a function
我想将一个函数传递给一个函数,在这种情况下,传递函数具有2D数组作为输入。
对于一维数组,我这样做:
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;
}
在C / C ++中,数组在传递给函数时将转换为指针。 double Y []将与double * Y相同。
对于两个二维数组,传递给函数时必须提供内部维数。
因为如果传递double Y [] [],它将被转换为double(* Y)[],这是不完整的类型。
相反,将double Y [] [50]转换为double(* Y)[50],这很好。
对于N维数组,必须提供内部N-1维。
例如,双Y [] [10] [20] [30]。
就像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 **);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.