Это работает для копирования int
с в обратном порядке:
void reverse_intcpy(int *restrict dst, const int *restrict src, size_t n)
{
size_t i;
for (i=0; i < n; ++i)
dst[n-1-i] = src[i];
}
Так же, как memcpy()
, регионы, на которые указывают dst
и src
, не должны перекрываться.
Если вы хотите повернуть вспять на месте:
void reverse_ints(int *data, size_t n)
{
size_t i;
for (i=0; i < n/2; ++i) {
int tmp = data[i];
data[i] = data[n - 1 - i];
data[n - 1 - i] = tmp;
}
}
Обе функции выше являются переносимыми. Вы можете сделать их быстрее, используя аппаратный код.
(я не проверял код на правильность.)