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。

但是,我想将 numbers[0] 分配给另一个变量。所以在现代编程语言中,你会做一些简单的事情:

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

尽管我的指针知识有限,但我知道这行不通(当然也行不通)。但是对于我的一生,我无法弄清楚使它起作用的正确语法(更重要的是,了解它为什么起作用)。

如果有人可以在这里帮助我,我将非常感激!

谢谢

4

1 回答 1

2

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

 memcpy(newvar, numbers[0], sizeof newvar);
于 2012-06-13T20:09:40.523 回答