Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从数组中检索多维数组_C_Arrays_Pointers - Fatal编程技术网

C 从数组中检索多维数组

C 从数组中检索多维数组,c,arrays,pointers,C,Arrays,Pointers,我现在对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 }; 如果我这样做: prin

我现在对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] );
尽管我的指针知识有限,但我知道这是行不通的(当然也行不通)。但就我的一生而言,我无法找出正确的语法来让它工作(更重要的是,理解它为什么工作)

如果有人能帮我,我会非常感激的


谢谢

您不能在C中分配数组,请使用
memcpy
复制数组:

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

对于静态分配的阵列,这并不容易。实际上,使用malloc()和链表样式的设计。这就简单了。顺便说一下,数字[0][2][2]的预期结果是0而不是1。