You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:48:05