Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- // Для отладки
- void revarray(void *, unsigned long, unsigned long);
- int array[] = {
- 100,
- 200,
- 300,
- 400,
- 500
- };
- int main()
- {
- revarray(array, 5, sizeof(int));
- for (int i = 0; i < 5; i++) {
- printf("%d\n", array[i]);
- }
- return 0;
- }
- // Решение
- #include <stdlib.h>
- #include <string.h>
- void revarray(void *base, unsigned long nel, unsigned long width)
- {
- void *tempArray = malloc(width * nel); // Выделяем память для сохранения оригинального массива
- memcpy(tempArray, base, width * nel); // Копируем текущий массив в tempArray
- for (int i = 0; i < nel; i++) { // Цикл поэлементный
- void *startPointer = base + i*width; // Куда копируем
- void *endPointer = tempArray + (nel - i - 1) * width; // Откуда копируем
- memcpy(startPointer, endPointer, width); // Копируем
- }
- free(tempArray); // Освобождаем память
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement