Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Динамические массивы в Си

Определение 1

Динамические массивы в Си — это возможность оптимального использования памяти электронной вычислительной машины.

Введение

Чтобы иметь возможность оптимально распределять для работы память компьютера, существует методика динамического распределения памяти. К примеру, есть программа обработки какого-либо массива информационных данных. При формировании этой программы возникла необходимость объявления данного массива. Можно задать массиву определённый зафиксированный размер (например, от нуля до ста элементов). Но в этом случае программа не будет универсальной, поскольку с её помощью можно работать с массивом, состоящим не более чем из ста элементов. В случае использования, к примеру, двадцати элементов, объём выделяемой памяти всё равно будет под сто элементов, поскольку массив был заявлен как статический. То есть налицо мало эффективное использование памяти.

Динамические массивы

На языке программирования Си динамические массивы возможно создавать, используя указатель и одну из функций динамического выделения памяти: malloc() или са11ос(). Команда malloc() выполняет возврат указателя на выделяемое в памяти место. Эта функция является частью библиотеки stdlib.h и записывается в таком формате:

void *та11ос (число байт)

Для сохранения данных других типов, требуется использовать приведение типов. Чтобы это сделать, надо перед функцией malloc() в круглых скобках указать необходимый тип данных и поставить звёздочку. К примеру, чтобы указать на целочисленный массив, приведение типов надо указать так:

(int *)

В качестве аргумента функции malloc() выступает число байтов, которые следует выделять. Число байтов находится путём умножения числа элементов массива на размер ячейки, необходимый для каждого компонента. То есть для выделения места в памяти, чтобы сформировать массив, включающий в себя десять целых чисел, функция malloc() должна быть представлена так:

«Динамические массивы в Си» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

(int ) malloc(10 sizeof(int)))

В языке программирования С++ предусмотрены специальные команды new и delete, предназначенные для организации динамических массивов в памяти компьютера. Команда new выполняет выделение памяти из свободных областей, а команда delete очищает эту область памяти. После окончания использования выделенной памяти, она должна быть очищена от информации, по этой причине команды new и delete применяются в паре. Если не очищать память в явном виде, то конечно это могут выполнить команды операционной системы после завершения работы программы. Но правильнее использовать штатную команду С++ delete.

Команда new выполняет создание объекта необходимого типа, назначает для него объём памяти и делает возврат указателя правильного типа на эту область памяти. В случае невозможности выделения памяти, к примеру, нет в наличии свободного объёма, то происходит возврат нулевого указателя. Память может быть выделена под любой вид данных: int, float, double, char и так далее.

В качестве примера приведём формирование одномерного динамического массива:

float *ptrarray = new float [10]; // объявлен одномерный динамический массив на десять элементов.

// здесь ptrarray – указатель на выделяемую область памяти для вещественного массива типа float.

По завершению работы с динамическим массивом, необходимо очистить память, которая выделялась для него:

delete [] ptrarray; // очистка памяти, которая выделялась под одномерный динамический массив.

За командой delete необходимо поставить квадратные скобки, которые являются командой освобождения участка памяти, отведённого для одномерного массива.

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 29.10.2019
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot