Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава3_Массивы и указатели в С++.doc
Скачиваний:
0
Добавлен:
10.12.2019
Размер:
331.26 Кб
Скачать

Глава III. Массивы и указатели

9. Массивы

9.1. Общие принципы организации массивов

Массив – это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива). Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Индекс в обозначении компонент массивов может быть константой, переменной или выражением порядкового типа.

Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.

Количество хранящихся в массиве элементов называется размером массива.

Размер массива ограничен объемом оперативной памяти и типом данных элементов массива.

Размерность массива – степень вложенности массивов (иначе количество индексов у элемента): одномерный (вектор), двумерный (таблица или матрица), трехмерный (куб), n-мерный.

Различают статические и динамические массивы. Статические массивы – массивы фиксированного размера. Размер задается при объявлении массива и остается неизменным в ходе выполнения программы. Динамические массивы могут изменять размер в процессе выполнения.

9.2. Объявление и инициализация массивов

Любой массив объявляется следующим образом:

<тип данных> <имя>[<размер>];

где <тип данных> – тип данных элементов массива, <имя> – имя массива, <размер> – количество элементов типа <тип данных>, содержащихся в массиве <имя>.

Индексация массива в языке Си++ начинается с нуля. То есть первым (начальным) элементом является элемент с нулевым индексом. Последним в массиве будет элемент с индексом <размер> – 1. Например, оператор

int m[5];

объявляет целочисленный массив m. Он имеет 5 целочисленных элементов, к которым можно обращаться при помощи функции индексирования: m[0], m[1], m[2], m[3], m[4]:

m[0]

m[1]

m[2]

m[3]

m[4]

Многомерные массивы задаются указанием каждого измерения в квадратных скобках. Например, оператор

int matr[4][5];

задает описание целочисленного двумерного массива из 4 строк и 5 столбцов. Данный массив можно представить в виде таблицы:

matr[0][0]

matr[0][1]

matr[0][2]

matr[0][3]

matr[0][4]

matr[1][0]

matr[1][1]

matr[1][2]

matr[1][3]

matr[1][4]

matr[2][0]

matr[2][1]

matr[2][2]

matr[2][3]

matr[2][4]

matr[3][0]

matr[3][1]

matr[3][2]

matr[3][3]

matr[3][4]

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

Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j].

Размер массивов предпочтительнее задавать с помощью типизированных констант. Например:

const int n=5;

int m[n];

или

const int m=4,n=5;

int matr[m][n];

Инициализировать массив данными можно при его объявлении. Например, оператор

double f[5] = {1.0,0.4,0.2,-4.55,10.0};

объявляет вещественный массив f из 5 элементов и заносит в его ячейки соответствующие значения:

индекс i

0

1

2

3

4

значение f [i]

1.0

0.4

0.2

-4.55

10.0

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

При инициализации размер массива можно не указывать, то есть следующее объявление корректно:

double f[] = {1.0,0.4,0.2,-4.55,10.0};

Инициализация многомерного массива:

int mas[3][2]={ {1, 1}, {0, 2}, {1, 0} };

или

int mas[3][2]={1, 1, 0, 2, 1, 0};

или

int mas[][]={ {1, 1}, {0, 2}, {1, 0} };