首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个数组没有被弄乱?

为什么这个数组没有被弄乱?
EN

Stack Overflow用户
提问于 2017-02-15 02:55:58
回答 1查看 25关注 0票数 0

我正在研究代码以了解扩展的USB控件,我偶然发现了如下所示的代码。该函数颠倒了数组的顺序。这很简单,除了一件事。为什么代码不会破坏数组?使用源和目标作为相同的变量会破坏它,不是吗?

代码语言:javascript
复制
/*
 * Convert a array of bytes from big endian to little endian and vice versa by inverting it
 */
static
uint8_t *raw_inv(uint8_t *data, int size) {

    int ai = 0;
    int bi = size - 1;
    uint8_t a = 0;
    uint8_t b = 0;

    while (ai < bi) {
        a = data[ai];
        b = data[bi];

        data[ai] = b;
        data[bi] = a;
        ai++;
        bi--;
    }

    return data;
}

啊:这是'static‘声明,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-15 02:58:37

它使用ab作为临时变量来保存要交换的值。只有one temporary is needed --这可以重写为:

代码语言:javascript
复制
while (ai < bi) {
    a = data[ai];
    data[ai] = data[bi];
    data[bi] = a;
    ai++;
    bi--;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42234093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档