如何移动整个2D阵列

时间:2019-04-18 13:01:20

标签: c arrays 2d bit-shift

我正在尝试驱动一个LED矩阵,但无法将整个显示器向下移动。我的最终目标是转移所有行,并希望最终实现环绕。问题在于每行移位时都会复制第一行。

我使用的代码如下:

for (int i = (LAYERS - 1); i >= 0; i-- ) {
            for(int z = 0; z < BYTES; z++) {
                LED_Buffer[i+1][z] = LED_Buffer[i][z];
            }
        }

1 个答案:

答案 0 :(得分:1)

您需要某种方式的临时变量来进行环绕。

在给定数组foobar[size]的情况下,将元素向数组下移一个位置的一般算法是:

tmp = foobar[size-1];
for(int i=size-1; i>0; i--) // note i>0, don't include first item
{
  foobar[i] = foobar[i-1];
}
foobar[0] = tmp;

其中size-1来自0索引数组。现在,只需将其应用于您的特定情况即可。