2012-06-13 124 views
4

我現在正在用C中的指針瘋狂。我有以下兩個多維數組:從數組中檢索多維數組

int num0[5][3] = 
{ {0,1,0}, 
    {1,0,1}, 
    {0,1,0}, 
    {1,0,1}, 
    {0,1,0} 
}; 

int num1[5][3] = 
{ {1,1,1}, 
    {1,0,1}, 
    {0,1,1}, 
    {0,1,0}, 
    {1,0,0} 
}; 

這些然後裝入另一個數組這樣:

int (*numbers[])[3] = { num0, num1 }; 

如果我那麼做:

printf("Result: %d\n", numbers[0][2][2]); 

我得到預期的結果,在這種情況下結果:1.

但是,我想將數字[0]分配給另一個變量。因此,在一個現代的編程語言,你會做的簡單的東西:

int newvar[5][3] = numbers[0]; 
printf("Result: %d\n", newvar[2][2]); 

即使我的指針知識是有限的,我知道這是行不通的(當然沒有的話)。但是對於我來說,我無法弄清楚正確的語法來使其工作(更重要的是,理解它爲什麼起作用)。

如果有人能在這裏幫助我,我會很感激!

感謝

+2

隨着靜態分配的數組,這不是一件容易的事。真的,使用malloc()和鏈表式設計。這就是它容易的方式。 – 2012-06-13 19:59:31

+1

順便說一下,數字[0] [2] [2]的預期結果是0而不是1。 –

回答

2

你也不會在C數組分配,使用memcpy複製數組:

memcpy(newvar, numbers[0], sizeof newvar);