Программирование >>  Структурное программирование 

1 ... 87 88 89 [ 90 ] 91 92 93 ... 342


4.2. Массивы

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

На рис. 4.1 показан массив целых чисел, названный с. Этот массив содержит 12 элементов. На любой элемент массива можно сослаться, указывая имя массива и номер позиции элемента, заключенный в квадратные скобки ([ ]). Первый элемент каждого массива - это нулевой элемент. Таким образом, первый элемент массива с, указывают как с[0], второй элемент - как с[1], седьмой - как с[6] и вообще i-ый элемент массива с указывают как с[1-1]. Имена массивов должны удовлетворять тем же требованиям, которые предъявляются к другим именам переменных.

Имя массива (заметьте, что все элементы этого массива имеют одно и то же имя, с)

С[0]

otl]

с[2]

с[3]

о[4]

1543

С[5]

с[6]

с[7]

с[8]

с[9]

с[10]

6453

с[11]

Позиция номера элемента внутри массива с

Рис. 4.1. Массив из 12-ти элементов

Номер позиции, указанный внутри квадратных скобок, называется индексом. Индекс должен быть целым числом или целым выражением. Если программа использует выражение в качестве индекса, то выражение вычисляется с целью определения индекса. Например, если мы предположим, что переменная а равна 5, а переменная b равна 6, то оператор

с[а -Ь Ь] -1-= 2;



добавляет 2 к элементу массива с[11]. Заметим, что имя индексированного массива является целой L-величиной - оно может быть использовано в левой части оператора присваивания.

Проанализируем массив с на рис. 4.1 более детально. Имя массива - это с. Его двенадцать элементов обозначены как с[0], с[1], с[2],...,с[11]. Значение с[0] равно 45, значение с[1] равно 6, значение с[7] равно 62, значение с[11] равно 78. Чтобы напечатать сумму значений, содержащихся в первых трех элементах массива с, мы должны были бы написать

cout c[0] +с[1] +с[2] endl;

Чтобы разделить значение седьмого элемента массива с на 2 и присвоить результат переменной х, мы должны были бы написать

X = с[6] /2;

Типичная ошибка программирования 4.1

Важно отметить различие между седьмым элементом массива и элементом массива семь . Поскольку индексы массива начинаются с О, седьмой элемент массива имеет индекс шесть, тогда как элемент массива семь имеет индекс 7 и на самом деле является восьмым элементом массива. Это - источник ошибок типа завышения (или занижения) на единицу.

Квадратные скобки, внутри которых записывается индекс массива, на самом деле рассматриваются в С++ как операция индексации. Квадратные скобки имеют тот же уровень старшинства, что и круглые скобки. Таблица на рис. 4.2 показывает приоритеты и ассоциативность тех операций, с которыми мы уже познакомились к настоящему моменту. Операции расположены сверху вниз в порядке понижения старшинства с указанием их ассоциативности и типа.

Операции

Ассоциативность

Тип операций

0 []

слева направо

наивысший

+ - ! (тип)

справа налево

унарные

/ %

слева направо

мультипликативные

слева направо

аддитивные

слева направо

поместить в/взять из

< <= > >=

слева направо

отношение

слева направо

проверка на равенство

&&

слева направо

логическое И

слева направо

логическое ИЛИ

справа налево

условная

+= -= *= /= %=

справа налево

присваивание

слева направо

запятая (последование)

Рис. 4.2. Приоритеты и ассоциативность операций



Щё /I присваивание массиву начальных значений

\ #include <iostream.h> finclude <iomanip.h>

jj main о

int n[10];

for (int i = 0; i < 10; i++) присваивание массиву

начальных значений

n[i] = 0;

cout Элемент setw(13) << Значение << endl;

for(i =0; i < 10; i++) печать массива

cout setw(7) i << setw(13) << n[i] endl; return 0;

Рис. 4.3. Присваивание нулевых начальных значений элементам массива (часть 1 из 2)

4.3. Объявление массивов

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

int с[12];

Память может быть зарезервирована для нескольких массивов с помощью одного объявления. Следующее объявление резервирует память для 100 элементов массива целых чисел b и 27 элементов массива целых чисел х.

int b[100], х[27];

Массивы могут быть объявлены и для хранения других типов данных. Например, для хранения строки символов можно использовать массив типа char. Строки символов и их схожесть с массивами, а также соотношение между указателями и массивами обсуждаются в главе 5.

4.4. Примеры использования массивов

в программе на рис. 4.3 используется структура повторения for для присвоения начальных нулевых значений элементам массива п, содержащего десять целых чисел, и для печати массива в табулированном формате. Первый оператор вывода выводит на экран заголовки столбцов, печатаемых структурой for. Напомним, что setw указывает ширину поля, в котором будет выведено следующее значение.



1 ... 87 88 89 [ 90 ] 91 92 93 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика