簡體   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