如何移动整个二维数组
How to shift the entire 2D array
我正在尝试驱动 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];
}
}
您需要某种方式的临时变量来进行回绕。
给定某个数组 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 索引数组。现在只需将相同的方法应用于您的具体情况。
我正在尝试驱动 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];
}
}
您需要某种方式的临时变量来进行回绕。
给定某个数组 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 索引数组。现在只需将相同的方法应用于您的具体情况。