2012-06-13 122 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);