Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чет про программирование / 11) Динамические массивы

.docx
Скачиваний:
24
Добавлен:
25.04.2015
Размер:
16.41 Кб
Скачать

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

Динамическим называется массив, размер которого может меняться во время исполнения программы. Для изменения размера динамического массива язык программирования, поддерживающий такие массивы, должен предоставлять встроенную функцию или оператор. Динамические массивы дают возможность более гибкой работы с данными, так как позволяют не прогнозировать хранимые объёмы данных, а регулировать размер массива в соответствии с реально необходимыми объёмами. 

  • byteArray : Array of Byte; // Одномерный массив

multiArray : Array of Array of string; // Многомерный массив

Переменная динамического массива представляет собой ссылку на размещаемые в динамической памяти элементы массива. Изначально память под массив не резервируется, количество элементов в массиве равно нулю, а значение переменной массива равно nil.

  • SetLength(a,5,3); // Задание длины двумерного динамического массива

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

При уменьшении размера динамического массива лишние элементы теряются.

При увеличении размера динамического массива добавленные элементы не инициализируются никаким значением и в общем случае их значения случайны. 

Для работы с динамическими массивами можно использовать стандартыне функции ЯП Паскаль:

  • High(a) – возвращает верхний индекс массива а (внешнего)

  • Low(a) - возвращает нижний индекс массива а (=0) (внешнего)

  • Length(a) – возвращает длину массива а

При этом следует учитывать, что нумерация элементов в динамическом массиве идет с 0.

Копирование динамических массивов

Динамические массивы одного типа можно присваивать друг другу, при этом обе переменные-ссылки будут указывать на одну память:

  • var a1: array of integer; var a2: array of integer; a1 := a2;

Чтобы одному динамическому массиву присвоить копию другого массива, следует воспользоваться стандартной функцией Copy:

  • a1 := Copy(a2);