Динамический массив в языке Си: объявление, инициализация, добавление и удаление элементов
Динамический массив в языке Си - это массив, который может изменять свой размер во время выполнения программы. Для создания динамического массива в Си используется функция malloc(), которая выделяет память в куче (heap) и возвращает указатель на начало блока памяти.
Пример создания динамического массива из 10 целых чисел:
c
int *myArray;
myArray = (int*) malloc(10 * sizeof(int));
В этом примере создается указатель на int-тип, который будет использоваться для доступа к созданному динамическому массиву. Затем вызывается функция malloc(), которая выделяет память под 10 элементов типа int. Функция sizeof() обеспечивает правильный размер элемента в байтах.
Чтобы обратиться к элементу динамического массива, необходимо использовать оператор индексации []. Например, чтобы установить значение третьего элемента в 42, можно использовать следующий код:
c
myArray[2] = 42;
Если нужно изменить размер динамического массива, необходимо использовать функцию realloc(). Например, чтобы увеличить размер динамического массива до 20 элементов, можно использовать следующий код:
c
myArray = (int*) realloc(myArray, 20 * sizeof(int));
В этом примере вызывается функция realloc(), которая перераспределяет память блока, указанного в первом параметре (указатель на начало блока памяти), и возвращает указатель на новую область памяти. Второй параметр определяет новый размер блока в байтах.
После использования динамического массива, необходимо освободить выделенную под него память с помощью функции free():
c
free(myArray);
В противном случае может возникнуть утечка памяти.
Кроме использования указателей, можно использовать typedef для определения нового типа данных, представляющего динамический массив. Например:
c
typedef int* intArrayPtr;
intArrayPtr myArray;
myArray = (int*) malloc(10 * sizeof(int));