Читайте также:
|
|
Динамические массивы
Динамические массивы не имеют фиксированной длины или размеров. Память для динамического массива распределяется в процессе присваивания или передачи в процедуру SetLength.
Тип динамического массива определяется конструкцией вида
Array of baseType
Например,
var MyFlexibleArray: array of Real;
объявляет одномерный динамический массив вещественных чисел типа Real. Объявление не выделяет памяти массиву MyFlexibleArray. Для создания массива в памяти надо вызвать SetLength. Напимер,
SetLength(MyFlexibleArray, 20);
Распределяет в памяти 20 вещественных чисел, проиндексированных от 0 до 19. Динамические массивы всегда имеют целочисленную индексацию, всегда начинающуюся с 0.
Имена динамических массивов неявно являются указателями. Для освобождения памяти динамического массива надо присвоить имени nil или передать переменную процедуре Finalize. Динамические массивы автоматически освобождаются, если счетчик ссылок на них становится равен нулю. Динамические массивы длиной 0 имеют значения nil.
Если X и Y – переменные одного типа динамического массива, X:=Y устанавливает X на тот же массив, что и Y. (Нет необходимости распределять память для X перед выполнением операции) В отличие от статических массивов динамические массивы не копируются автоматически перед записью в них. Например, после выполнения кода,
Var
A, B: array of Integer;
Begin
SetLength(A, 1);
A[0]:= 1;
B:= A;
B[0]:= 2;
end;
Дата добавления: 2015-07-11; просмотров: 154 | Нарушение авторских прав