关于C语言中乒乓数组滚动的简洁实现的技术咨询
关于C语言中调色板数组滚动的简洁实现咨询
嘿,大伙好!我最近在做一个C项目,需要实现调色板循环滚动的功能,自己写了个函数,目前功能正常,但总感觉代码有点啰嗦,想请教下有没有更简洁或者高效的写法。先贴一下我的实现:
void scrollPalette(u16 arr[]) { if (g_scrollDir) { u16 first = arr[0]; for (u8 i = 0; i < 15; i++) { arr[i] = arr[i + 1]; } arr[15] = first; } else { u16 last = arr[15]; for (u8 i = 15; i > 0; i--) { arr[i] = arr[i - 1]; } arr[0] = last; } }
我这里是固定操作16个元素的数组,根据g_scrollDir的布尔值来决定是左滚还是右滚。现在想优化的点主要有两个:
- 能不能把两段循环的逻辑合并一下,减少代码重复?
- 有没有办法让函数支持任意长度的数组,而不是硬编码死16个元素的限制?
另外,考虑到我这个是在嵌入式环境里用的,也想知道有没有更省运行周期的实现方式,毕竟每帧都要调用这个函数。
内容来源于stack exchange
相关产品推荐
相关产品推荐

