Иногда бывает трудно заранее определить, сколько элементов нужно будет поместить в список. Для этого используют динамические массивы.
Динамические массивы используются в том случае, когда количество элементов массива заранее не известно и будет определяться в процессе выполнения программы. Как следствие, после того, как работа с динамическими массивом в программе будет выполнена, можно освободить память, которую он занимает.
Динамический массив объявляется так же, как и любой другой тип массива – оператором Dim. Единственное отличие состоит в том, что не указывается (в скобках) размер массива. Например:
Dim A() As Byte
Этой строкой создается массив, но откладывается решение о том, сколько он будет иметь элементов. Перед тем, как использовать этот массив, необходимо указать его размер, который во время работы программы можно изменять сколько угодно раз. Это делается с помощью оператора ReDim.
ReDim A(5)
Следует отметить, что при указании значений для размерностей динамического массива оператором ReDim его тип не может быть изменен.
|
|
При помощи оператора ReDim можно установить любые значения границ и количество размерностей, а также менять любой из установленных параметров как в сторону уменьшения, так и увеличения.
Dim A() As Byte
ReDim A(5) 'Диапазон от 0 до 5
ReDim A(1 To 4) 'Диапазон от 1 до 4
ReDim A(3, 3, 1 To 3) 'Диапазон от 0 до 3,
'от 0 до 3, от 1 до 3
В качестве как верхней, так и нижней границы могут быть использованы не только числа, но и переменные целого типа:
Dim n As Integer
Dim A() As Integer
n = 10
ReDim A(n)
При каждом выполнении оператора ReDim все значения элементов массива, которые до этого в нем хранились, будут потеряны, так как данный оператор обнуляет все элементы в соответствии с их типом, например числовые массивы принимают значение 0, а символьные "" (пусто). Для того чтобы имеющиеся в массиве значения не пропали при его переопределении, следует использовать служебное слово Preserve:
Sub primer()
Dim n As Integer
Dim i As Integer
Dim a() As Integer
n = 10
ReDim a(n)
For i = 1 To n
a(i) = i ^ 2
Next i
ReDim Preserve a(15)
For i = 11 To 15
a(i) = i ^ 3
Next i
End Sub
В данной программе требуется заполнить массив из десяти элементов квадратами первых десяти натуральных чисел. Затем следует переопреде-ление размера массива до 15 и заполнение новых элементов (с 11 по 15) кубами следующих натуральных чисел. Смотри также примеры 6 и 7.