Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции программирование.doc
Скачиваний:
40
Добавлен:
05.11.2018
Размер:
4.73 Mб
Скачать

Описание массивов

Любая информация в ЭВМ хранится в ячейках оперативной памяти. Поэтому предполагаемая работа с массивом требует предварительного выделения памяти для его хранения. Это действие выполняет описание массива.

Описание массива предписывает резервирование в памяти ЭВМ необходимого количества последовательно расположенных ячеек для хранения его элементов. Число ячеек выделяемого участка должно соответствовать количеству элементов массива. Желательно предусматривать увеличенный размер массива (по отношению к реально заданному).

Структура отдельного оператора описания одномерного массива:

Описатель имя[размер];

где описатель – ключевое слово, определяющее тип элементов массива;

имя – идентификатор массива (формируется аналогично имени переменной);

размер – целая константа, определяющая количество элементов массива;

[ ] – ограничители размера массива.

Совместное описание символьных переменных x, y, z, а также одномерных массивов T(120) и S(70) может иметь вид:

char x, y, z, t[120], s[70]; или char y, t[120], x, s[70], z;

т.е. порядок расположения элементов может быть любым.

Обозначение элементов массива

Описание массива позволяет использовать в программе любой из его элементов. Для обозначения элементов массива в Си используются индексированные переменные.

Индексированная переменная (индексное выражение) – обозначение ячейки для хранения элемента массива. Именуется указанием идентификатора массива и индекса (индексов) элемента.

  • Внимание ! Особенность обозначения элементов массива в Си - нумерация индексов от 0, а не от 1. Поэтому индексы в Си на единицу меньше заданных математически. Это обстоятельство должно учитываться в программе, особенно при формировании условия повторения (выхода из) цикла.

Схема распределения памяти для хранения одномерного массива такова:

индекс 0

индекс 1

индекс 2

индекс i-1

индекс n-2

индекс n-1

1-й

элемент

2-й

элемент

3-й

элемент

..

..

..

i-й

элемент

..

..

..

n-1-й

элемент

n-й

элемент

Длина ячейки для хранения каждого элемента определяется типом массива:

  • символьный – 1 байт;

  • целочисленный – 2 байта;

  • вещественный – 4 байта;

  • двойной точности – 8 байт.

Структура обозначения индексированной переменной одномерного массива:

Имя[индекс]

, где имя – идентификатор массива;

индекс – операнд целого типа, определяющий номер элемента в ряду других, составляющих массив;

[ ] – ограничители индекса.

Например, в описанном ранее массиве D(16) первый элемент обозначается индексным выражением d[0], второй – d[1], текущий – d[i], предпоследний – d[14] и последний – d[15].

При необходимости индекс может задаваться арифметическим выражением. Например, d[i+2] или d[jx5+3]. В любом случае на момент использования переменной индекс должен быть определен (рассчитан) и полученное значение должно укладываться в заданный описателем диапазон.

Адрес любой переменной определяется операцией & . Следовательно, у элемента d[0] адрес – &d[0], у d[i] – &d[i], т.е. все элементы массива располагаются в оперативной памяти линейно, начиная с адреса &d[0].

В языке Си идентификатор одномерного массива однозначно определяет адрес его первого элемента. Например, c &c[0], d &d[0].

Адрес каждого элемента одномерного массива выражается зависимостью имя+индекс (индекс определяет сдвиг элемента относительно первого на указанное им количество элементов). Например, &c[i] (адрес i-го элемента массива С) вычисляется как c+i.

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

Многомерные массивы.

Структура отдельного оператора описания многомерного массива: