Ich studiere Code, um mehr über Extended USB Controls zu erfahren, und ich stieß auf diesen Code, der unten gezeigt wird. Die Funktion kehrt die Reihenfolge eines Arrays um. Es ist ziemlich einfach, bis auf eine Sache. Warum beschädigt der Code das Array nicht? Wenn Sie die Quelle und das Ziel als dieselbe Variable verwenden, sollten Sie sie verfälschen, oder?Warum wird dieses Array nicht verschmutzt?
/*
* 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;
}
Ah: Es ist die "statische" Erklärung, nicht wahr?
Wo verwendet es die Quelle und das Ziel als die gleiche Variable? (Die "statische" Deklaration der Funktion sollte keinen Einfluss auf das Kopieren haben.) –