Элементы массива размещаются в памяти в последовательных ячейках. Массив занимает количество байт, равное произведению количества элементов массива на размер одного элемента:
SizeOfArray = NumElement * SizeOfElement
где SizeOfArray – размер массива
NumElement – количество элементов в массиве
SizeOfElement – размер одного элемента
Адрес первого (по порядку) элемента массива является адресом массива (будем обозначать его AdrArray). Адрес i-го элемента массива (его будем обозначать AdrI) можно вычислить по формуле:
AdrI = AdrArray + (i – нижняя_граница_индекса) * SizeOfElement
Для примера рассмотрим массив B, определенный выше. Нижняя граница индекса этого массива = 5. Первый (по порядку) элемент массива - B[5]. Пусть его адрес = 100. Размер каждого элемента 6 байт, поскольку тип элементов - Real.
Вычислим адреса остальных элементов массива
Adr6 = 100 + (6-5)*6 = 100 + 1*6 = 106
Adr7 = 100 + (7-5)*6 = 100 + 2*6 = 112
Adr8 = 100 + (8-5)*6 = 100 + 3*6 = 118
Графически покажем взаимное расположение элементов этого массива:
Адрес элемента
| Элемент
|
| B[5]
|
| B[6]
|
| B[7]
|
| B[8]
|
Замечание: Один массив может занимать в памяти не более 65520 байт. Нельзя, например, определить такой массив C:
Var C: array[1..50000] of integer;
- каждый элемент этого массива занимает в памяти 2 байта, элементов 50000, значит весь массив занимает 100000 байт > 65520 байт.