我目前正尝试用随机函数从三维数组中分配给二维数组。因此:
byte blocks[7][4][2] = {{{0,0},{1,0},{2,0},{3,0}}};
byte currentBlock[4][2] = blocks[random(0,6)];在试图编译时,我得到了“错误:无效数组分配”。
它为什么要这样做,我如何才能实现我想要的?我知道我的三维数组中只有一件事,但如果我不能这样做,我宁愿不要浪费时间进入其他地方。
谢谢!
Bump
二次凸点
发布于 2014-04-11 08:35:19
经过大量的搜索和处理。我已经找到了,似乎是一个解决办法。使用memcpy
memcpy(blocks[currentBlock, random(0,6)], sizeof(blocks[k]));似乎能做到这一点。不幸的是,这只是编译,我不知道它是否运行良好,因为我没有我的arduino在我身上,但我将使用这个被接受的答案,如果它是可行的。
发布于 2014-04-11 09:41:21
在大多数情况下,复制数组的内容似乎并不是最好的方法(除非您特别需要一个独立的副本,您可以在不影响原始副本的情况下修改它)。
一般来说,更好的方法是存储指向要使用的数组部分的指针。例如:
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。
https://stackoverflow.com/questions/22974977
复制相似问题