Урок 74. Массивы. Часть 1

   ⁄ 

 Обновлено 10 Авг 2017

  ⁄   

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

К счастью, структуры не являются единственным агрегированным типом данных в C++. Есть еще массив — совокупный тип данных, который позволяет получить доступ ко всем переменным одного и того же типа данных через использование одного идентификатора.

Рассмотрим случай, когда нужно записать результаты тестов для 30 студентов в классе. Без использования массивов нам придется выделить почти 30 одинаковых переменных!

С использованием массивов всё гораздо проще. Следующая строчка эквивалентна коду выше:

В объявлении переменной массива мы используем квадратные скобки ([]), чтобы сообщить компилятору, что это переменная массива (а не обычная переменная) и их количество (это называется длиной или размером массива).

В примере выше мы объявили фиксированный массив с именем testScore и длиной 30. Фиксированный массив (также называемый массивом фиксированной длины или массивом фиксированного размера) представляет собой массив, размер которого известен во время компиляции. При создании testScore, компилятор выделит 30 целочисленных переменных.

Элементы массива и индексация

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

В примере выше первым элементом в нашем массиве является testScore[0]. Второй — testScore[1]. Десятый — testScore[9]. Последний элемент в массиве testScore — testScore[29]. Хорошо, что уже не нужно отслеживать и помнить кучу разных (хоть и похожих) имен переменных – для доступа к разным элементам меняется только индекс.

Важно: В отличие от повседневной жизни, где мы обычно начинаем считать с 1, в массивах и в C++ отсчет всегда начинается с 0!

Для массива длины N элементы массива пронумерованы от 0 до N-1! Это называется диапазоном массива.

Пример программы с использованием массива

Здесь мы можем наблюдать как определение, так и индексирование массива:

Результат:

The lowest number is: 3
The sum of the first 5 numbers is: 29

Типы данных в массивах

Массив можно сделать из любого типа данных. Например, объявляем массив типа double:

Результат:

The average is 3.1

Массивы также можно сделать из структур. Например:

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

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

Индексы массивов

В C++ индексы массивов всегда должны быть интегрального типа (char, short, int, long, long long… — и, как ни странно, bool). Эти индексы могут быть либо константными значениями, либо не константными.

Например:

Объявление массивов фиксированного размера

При объявлении массива фиксированного размера, его длина (между квадратными скобками) должна быть константой типа compile-time (которая определяется во время компиляции). Вот несколько разных способов объявления массивов с фиксированным размером:

Обратите внимание, в двух последних случаях мы должны получить ошибку, так как длина массива не является константой типа compile-time. Некоторые компиляторы могут разрешить использование таких массивов, но они являются некорректными в соответствии со стандартами C++ и не должны использоваться в программах C++.

Чуть-чуть о динамических массивах

Поскольку массивам фиксированного размера память выделяется во время компиляции, то здесь мы имеем два ограничения:

 массивы фиксированного размера не могут иметь длину, основанную на любом пользовательском вводе или другом значении, которое вычисляется во время выполнения программы (runtime);

 фиксированные массивы имеют фиксированную длину, которую нельзя изменить.

Во многих случаях эти ограничения являются проблематичными. К счастью, C++ поддерживает еще один тип массивов, известный как динамический массив. Размер такого массива может быть установлен ​​во время выполнения программы и его можно изменить. Однако создание динамических массивов несколько сложнее фиксированных, поэтому об этом мы поговорим несколько позже в этой главе.

Итого

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

В следующем уроке мы рассмотрим больше тем связанных с фиксированными массивами.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (11 оценок, среднее: 4,82 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *