C++. Массивы. Часть 1. Определение массива. Одномерные массивы. Инициализация массива
Массивы. Часть 1. Определение массива. Одномерные массивы. Инициализация массива
СодержаниеПоиск на других ресурсах:
1. Что такое массив? Определение массиваМассив – набор переменных одинакового типа. Доступ к этим переменным осуществляется по одному имени. Это имя называется именем массива.
Массивы используются для группирования связанных переменных между собой.
2. Определение одномерных и многомерных массивов.Массивы могут быть одномерными и многомерными. В одномерных массивах для доступа к элементу массива используется один индекс. В многомерных массивах для доступа к элементу массива используется несколько индексов.
3. Описание одномерного массива. Примеры описания одномерных массивовОбщая форма описания одномерного массива:
В вышеприведенном описании:
- тип – это тип элементов массива. Он еще называется базовым типом. Базовый тип определяет количество данных каждого элемента, который составляет массив. Тип элементов массива может быть как базовым типом так и составным (например, структура). Подробно о базовых типах данных C++ описывается здесь.
- размер – количество элементов в массиве;
- имя_массива – непосредственно имя массива, по которому осуществляется доступ к элементам массива.
После описания массива, значение элементов может быть нулевым или неопределенным.
Пример 1. Описание массива из 10 целых чисел (тип int ) с именем A .
В результате, в памяти компьютера выделяется 10 ячеек типа int . Если одна ячейка занимает 2 байта, то всего будет выделено 20 байт памяти. Номер первой ячейки начинается с нуля. Эти ячейки объединены общим именем A .
Рисунок 1. Массив из 10 целых чисел
Пример 2. Описание массива с именем M , содержащим 20 элементов типа char .
4. Доступ к элементам одномерного массива. ПримерыДоступ к отдельному элементу массива осуществляется с помощью индекса. Индекс определяет позицию элемента в массиве. Первый элемент массива имеет нулевой индекс.
Чтобы получить доступ к отдельному элементу массива по его индексу, нужно после имени массива в квадратных скобках указать номер этого элемента.
Пример 1. Пусть дан массив с именем A , содержащий 10 целых чисел. Записать число 5 в первый и последний элементы массива.
На рисунке 2 видно результат работы вышеприведенного программного кода.
Рисунок 2. Результат работы фрагмента кода
Пример 2. Массив из 10 элементов типа char .
Рисунок 3. Массив из 10 элементов типа char
Пример 3. Массив из 30 вещественных чисел.
5. Как определить размер одномерного массива?Размер одномерного массива определяется по формуле:
Пример.
Если в массиве 20 элементов типа double (8 байт), то размер массива будет
6. Особенности обработки массивов компилятором в C++ . Границы массиваВ C++ не ведется строгого контроля за доступом к элементам за пределами массива. Если описать массив из 100 элементов, то можно прочитать или изменить 101-й, 102-й и следующие элементы. На этих позициях могут быть ячейки памяти, которые были выделены для других переменных или даже для вашей программы. Это может привести к уничтожению программы при отсутствии каких-нибудь замечаний со стороны компилятора C++ .
Вся ответственность за соблюдение границ массивов лежит строго на программисте. Программист должен писать такой код, который гарантирует корректную работу с массивами. Это реализуется с помощью включения в программу специальных проверок.
7. Как осуществляется инициализация массива в C++ . ПримерыВ C++ поддерживается два вида инициализации массивов:
- инициализация с заданием размера массива;
- «безразмерная» инициализация.
Общий вид инициализации с заданием размера массива:
- тип – тип элементов массива;
- размер – количество элементов массива указанного типа;
- список_значений – список значений инициализации элементов массива. Элементы массива разделяются символом ‘ , ‘ (запятая).
Общий вид «безразмерной» инициализации:
В этом случае размер массива определяется количеством элементов, которые описаны в список_значений .
Пример 1. Массив B инициализирован с заданием размера.
Пример 2. Массив C инициализирован на основе списка значений («безразмерная» инициализация).
8. Инициализация символьных массивов. ПримерДля символьных массивов можно использовать сокращенный вариант инициализации:
В этом случае каждому элементу массива присваивается один символ строки. Значение размер задает размер памяти, который выделяется для массива. Значение размер должно быть не менее длины строки, в противном случае компилятор выдаст сообщение об ошибке.
Допускается также вариант инициализации массива без указания размера
В этом случае размер массива равен длине строки.
Пример. Инициализация символьного массива с именем str .
В вышеприведенном примере массивы str и str2 содержат одинаковые значения.
9. Присвоение одного массива другому. ПримерВ языке программирования C++ (в отличие от других языков) нельзя присваивать непосредственно один массив другому. Присваивать можно только поэлементно с использованием оператора цикла. При этом оба массива должны иметь одинаковый тип элементов.
Пусть заданы два массива целых чисел. Фрагмент кода, который присваивает один массив другому:
10. Описание массива структур. ПримерПусть дано описание структуры, которая содержит информацию о книге:
Это описание определяет новый тип struct BOOK . При таком описании память не выделяется. Это только информация о новом типе данных. Структура должна быть описана за пределами определения любого класса в начале определения пространства имен.
В программе массив из 5 книг (структур) можно описать так:
Доступ к элементам структуры в программе:
В вышеприведенном коде использована функция работы со строками
Эта функция копирует строку str2 в строку str1 . Чтобы использовать эту и другие функции работы со строками в начале программы (перед описанием пространства имен) нужно указать строку