繁体   English   中英

将2D数组输入传递给函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM