Нужен пример использования динамической памяти - C (СИ)
Формулировка задачи:
Привет всем, помогите, пожалуйста, разобраться с функциями типа malloc, realloc и т.п. Просто стояла задача такая: отсортировать массив одним способом. Все замечательно, но преподаватель вводит размер массива 2 миллиона и все падает Говорит, что надо использовать дин. память. я понимаю, что делают эти функции, однако на практике применять не приходилось. Не могли бы скинь пример каких-то полярограмм?
Решение задачи: «Нужен пример использования динамической памяти»
textual
Листинг программы
a = (int*)malloc(size * sizeof(int)); for (i=0; i<size; ++i) { a[i]=i ; //rand()%15 -6 ; printf ("%i ", a[i]); } printf ("\n\n"); // тут меняю местами первый второй, третий и четвертый эл. местами for (i=0; i<size; ++i) { removal = a[i * 2 + 1]; a[i * 2 + 1] = a[i * 2]; a[i * 2] = removal; printf ("%i ", a[i]); }
Объяснение кода листинга программы
Примерный разбор кода:
a = (int*)malloc(size * sizeof(int));
- выделение памяти под массивa
размеромsize
с помощью функцииmalloc()
.for (i=0; i<size; ++i)
- цикл по всем элементам массиваa
.a[i]=i
- присваивание каждому элементу массива его индекса.printf (
%i, a[i]);
- вывод значения каждого элемента массива через пробел.\n\n
- переход на новую строку.for (i=0; i<size; ++i)
- цикл по всем элементам массиваa
.removal = a[i * 2 + 1];
- временное хранение значения элемента с индексомi * 2 + 1
в переменнойremoval
.a[i * 2 + 1] = a[i * 2];
- обмен значениями элементов с индексамиi * 2 + 1
иi * 2
.a[i * 2] = removal;
- обмен значениями элементов с индексамиi * 2
иi * 2 + 1
.printf (
%i, a[i]);
- вывод значения каждого элемента массива через пробел.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д