2015-03-13 117 views
-7

我對傳遞一個2D數組有點困惑。 示例:傳遞一個2D數組

void out(int **a){.....}; 
void out2(int a[][]){......}; 
main() { 
    int arra[2][5]; 
    out (arra); 
    out2(arra); 
} 

我可以通過兩種方式傳遞數組嗎? 傳遞二維數組的最佳方式是什麼?爲什麼?

+1

void out2(int a [] [5])就是這樣,但也許你應該使用std :: array? – Guiroux 2015-03-13 14:27:42

+0

我從來沒有使用std :: array。當我嘗試以第一種方式傳遞時,我得到:void out(int **)':不能將參數1從'int [2] [3]'轉換爲'int **' – Geech 2015-03-13 14:32:36

+0

我告訴過你,必須使用數組語法並指定每個昏暗但第一個 – Guiroux 2015-03-13 14:41:12

回答

0

您可以通過參考與該醜陋語法傳遞數組:

void out3(int (&a)[2][5]){} 
main() { int a[2][5]; out3(a); } 

最好使用std::array<std::array<int, 5>, 2>std::vector

+0

什麼是&for? 'void out3(int a [2] [5])'工作正常,但是,絕對使用std反而更好 – Guiroux 2015-03-13 14:48:04

+0

@Guiroux:'void out3(int a [2] [5])'實際上是'void out3 (int(* a)[5])'。所以你可以傳遞'int a [3] [5]',其中引用不允許。 – Jarod42 2015-03-13 14:52:12

+0

好吧,所以我必須使用std :: array或使用指針指針:int ** a(對於第一種情況); – Geech 2015-03-13 14:59:05