uint16_t tab[]; void f(void) { uint16_t y; uint16_t *x; uint16_t tmp; uint8_t *a, *b; x = tab; while(*x) { a = x[1]; b = &x[2]; tmp = 0; for(y = *x; y > 0; y--) { a[tmp] = b[tmp]; tmp++; } x = &b[tmp]; } }