Хранение элементов массива. Доступ к элементам и частям массива
О доступе к элементам массива:
Var
a: array [1..5] of byte;
b: array [1..3, 1..5] of byte;
Строки |
Столбцы |
увеличение адреса (увеличение индекса)
а1 | a2 | a3 | a4 | а5 |
а[3] |
увеличение номера колонки
увеличение номера строки | b11 | b12 | b13 | b14 | b15 | 1-я строка |
b21 | b22 | b23 | b24 | b25 | 2-я строка | |
b31 | b32 | b33 | b34 | b35 | 3-я строка |
b[3,2] |
строка столбец
В памяти элементы массива b занимают непрерывную область и располагаются в следующем порядке:
b11, b12, b13, b14, b15, b21, b22, b23, b24, b25, b31, b32, b33, b34, b35
1-я строка 2-я строка 3-я строка
Как видно из рисунка сверху, в памяти элементы массива хранятся по строкам (эту последовательность надо знать, когда массив надо описать как типизированную константу).
Доступ к элементом массива в общем случае выполняется с использованием имени массива и индексов, записанных в квадратных скобках.
Индекс - порядковый номер элемента массива. Если одномерный - индекс - порядковый номер абсолютный. Если двумерный - первый индекс относится к строке, второй - к столбцу.
В общем случае индексом может быть выражение, значение которого должно быть совместимо по присваиванию с типом индекса, указанным при объявлении.
Правило относительно определения типа элемента массива: тип элемента массива определяется количеством индексов, которые указываются для этого элемента после имени массива.
Элемент массива
B[1,2] - byte;
B[1] - array [1..5] of byte;
Подмассив (первая строка массива) |
B – массив целиком
Особенностями хранения массива в памяти является следующее:
1. Все компоненты массива располагаются в памяти в порядке возрастания индексов.
2. Компоненты в памяти располагаются так, что занимают в памяти непрерывную область.
3. В случае многомерных массивов их элементы располагаются в памяти таким образом, что при движении по элементам массива в направлении возрастания адресов наиболее быстро увеличивается самый правый индекс (элементы массива хранятся по строкам).
Другими словами: массивы хранятся в памяти по строкам. Об этом нужно помнить при инициализации массивов как типизированных констант.
Const
a: array [1..2, 1..3] of byte = ((1,2), (3,4), (5,6)); - неправильно
b: array [1..2, 1..3] of byte = ((1, 2, 3), (4, 5, 6)); - правильно
При задании начального значения массива как типизированной константы, начальное значение заключается в круглые скобки (внешние), причем внутри внешних круглых скобок может быть еще несколько пар круглых скобок. Самая внешняя пара круглых скобок соответствует массиву в целом. Внутри этой самой внешней пары должно быть столько пар круглых скобок (со значениями), сколько имеется элементов по самой левой размерности. Внутри каждой пары внутренних (после внешних) скобок должно быть еще столько пар скобок (со значениями), сколько элементов имеется по более правой размерности, и т. д. Число элементов в самых внутренних скобках должно быть равно числу элементов по самой правой размерности.
>с: array [1..2, 1..3, 1..4] of byte = (((1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 4)),
((1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 4))) 2 тройки, в каждой тройке по 4
t ABQABgAIAAAAIQC1hUedBgMAAHsGAAAOAAAAAAAAAAAAAAAAAC4CAABkcnMvZTJvRG9jLnhtbFBL AQItABQABgAIAAAAIQCx0O2P2wAAAAgBAAAPAAAAAAAAAAAAAAAAAGAFAABkcnMvZG93bnJldi54 bWxQSwUGAAAAAAQABADzAAAAaAYAAAAA "/> элемента
3 четверки
Дата добавления: 2016-05-28; просмотров: 2784;