我正在尝试使用随机函数从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)];
尝试编译时出现“错误:无效的数组赋值”。
为什么会这样做,我怎样才能实现我的目标?我知道我的三维阵列中只有一件事,但如果我不能这样做,我宁愿不浪费时间进入其余部分。
谢谢!
凹凸
第二次碰撞
答案 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
。