从数组中检索多维数组

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] );

我得到了期望的结果,即Result:1。

然而,我想将numbers [0] 分配给另一个变量。因此,在现代编程语言中,您可以执行以下简单操作:

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

尽管我的指针知识有限,但我知道这样做行不通(当然不行)。但是我却无法弄清楚正确的语法使其正常工作(更重要的是,理解它为什么有效)。
如果有人可以帮助我,我会非常感激!
谢谢。

2
使用静态分配的数组并不容易。实际上,使用malloc()和链表式设计会更容易。 - user529758
1
顺便提一下,numbers[0][2][2]的预期结果是0而不是1。 - Michael Boselowitz
1个回答

2

在C语言中不能直接赋值数组,可以使用memcpy函数来复制数组:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接