Объясните действие функции , пожалуйста - C (СИ)
Формулировка задачи:
Объясните действие функции, пожалуйста
нужно ответить на вопросы:
1)каков смысл входных параметров функции
2)какую работу выполняет функция
3)каков смысл возвращаемого значения
+прокомментировать каждую строку
int *Funct(int *arr, int n)
{ int *ptr = (int*)malloc(n*sizeof(int));
int i, j;
for(i=0, j=0; i<n; i+=2, j++)
ptr[j] = arr[i];
for(i=1;i<n;i++)
ptr[j] = arr[i];
for(i=0; i<n; i++)
arr[i] = ptr[i];
free(ptr);
return arr;Решение задачи: «Объясните действие функции , пожалуйста»
textual
Листинг программы
int *Funct(int *arr, int n) // в качестве аргументов принимаем
{ // указатель на массив и величину массива
int *ptr = (int*)malloc(n * sizeof(int)); // динамически выделяем память для массива ptr, такой же величины что и arr
int i, j; // cчетчики для for циклов
for (i = 0, j = 0; i < n; i += 2, j++) // копируем каждый второй элемент из массива arr в массив ptr
ptr[j] = arr[i]; //
for (i = 1; i < n; i+=2,j++) // копируем через один
ptr[j] = arr[i]; // в наш динамический массив
for (i = 0; i < n; i++) // копируем сформированный массив в arr
arr[i] = ptr[i];
free(ptr); // освобождаем память
return arr; // возвращаем массив исходный массив
}
Объяснение кода листинга программы
- Функция
Functпринимает два аргумента: указатель на массивarrи величину массиваn. - С помощью
mallocдинамически выделяется память для массиваptr, такой же величины что иarr. - Создаются счетчики
iиjдля использования в циклах. - В первой части цикла, каждый второй элемент из массива
arrкопируется в массивptr. - Во второй части цикла, через один элемент из массива
arrкопируется в массивptr. - Третий цикл используется для копирования сформированного массива
ptrобратно в исходный массивarr. - Память, выделенная для массива
ptr, освобождается с помощьюfree. - Возвращается исходный массив
arr.