从Arduino中的三维数组中获取二维数组

时间:2014-04-09 22:14:05

标签: arrays random multidimensional-array arduino

我正在尝试使用随机函数从3-D阵列分配到2-D阵列。就这样:

byte blocks[7][4][2] = {{{0,0},{1,0},{2,0},{3,0}}};
byte currentBlock[4][2] = blocks[random(0,6)];

尝试编译时出现“错误:无效的数组赋值”。

为什么会这样做,我怎样才能实现我的目标?我知道我的三维阵列中只有一件事,但如果我不能这样做,我宁愿不浪费时间进入其余部分。

谢谢!

凹凸

第二次碰撞

2 个答案:

答案 0 :(得分:0)

经过多次搜索和搜索。我发现,似乎是一个解决方案。使用memcpy

  memcpy(blocks[currentBlock, random(0,6)], sizeof(blocks[k]));
似乎要做的伎俩。不幸的是,只计算编译,我不知道它是否会运行正常,因为我没有我的arduino,但我会用它作为接受的答案,如果它工作正常。

答案 1 :(得分:0)

复制数组的内容似乎不是大多数目的的最佳方法(除非您特别需要一个可以修改而不影响原始文件的独立副本。)

一般来说,更好的方法是存储指向要使用的数组部分的指针。例如:

byte blocks[7][4][2] = {{{0,0},{1,0},{2,0},{3,0}}, ... };
byte (*currentBlock)[2] = blocks[random(0, 6)];

这将使currentBlock指向blocks内的随机4x2数组。您可以使用与常规数组完全相同的方式访问它。唯一的区别是您使用currentBlock所做的任何更改都会影响blocks