0
我正在学习关于扩展USB控件的代码,并且我遇到了下面这段代码。该函数反转数组的顺序。除了一件事外,它非常简单。为什么代码不会破坏数组?使用源和目标作为相同的变量应该腐败它,不是吗?为什么这个数组没有被弄脏?
/*
* 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;
}
啊:这是'静态'声明,不是吗?
它在哪里使用源和目标作为相同的变量? (该函数的“静态”声明不应该影响复制。) –