2013-02-12 54 views

回答

0

具有自動存儲持續時間的數組始終需要編譯時常量邊界。事實上,你可以做int array[x];其中x不是GCC中的編譯時常量,僅僅是一個不可移植的擴展。事實上,你不能通過引用一個函數來傳遞這樣的非標準數組。

你可以通過邊界與數組一起,但使用標準容器如std::vector要好得多。

+0

但由於它是多維的,它不是矢量矢量嗎? – user1947180 2013-02-12 15:14:07

+0

@ user1947180是的,它會是:'std :: vector > array(x,std :: vector (y));' – 2013-02-12 15:15:24

+0

這是否默認將它們初始化爲0? – user1947180 2013-02-12 15:16:23

0

嘗試:

template<int X, int Y> 
void ArrayFn(int (&in)[X][Y]) 
{ 
    in[X-1][Y-1] = 666; // or whatever 
} 

,並調用它像:

int arr[3][3]; 
ArrayFn(arr);