3.1. МассивыПредставление данных в виде отдельных переменных не всегда достаточно при программировании реальных задач. Например, для представления поведения сигнала во времени или хранения информации об изображении удобно использовать специальный тип данных – массивы. Одномерные массивы можно ассоциировать с компонентами вектора, а двумерные – с матрицами. В общем случае массив – это набор элементов данных одного типа, для объявления которого используется следующий синтаксис:
Например,
Как видно из примеров, объявление массивов отличается от объявления обычных переменных наличием квадратных скобок []. Также имена массивов выбираются по тем же правилам, что и имена переменных. Обращение к отдельному элементу массива осуществляется по номеру его индекса. Следующий фрагмент программы демонстрирует запись в массив значений линейной функции f(x)=kx+b и вывода значений на экран:
В языке С++ предусмотрена возможность инициализации массива в момент его объявления, например, таким образом
В этом случае элементу powers[0] присваивается значение 1, powers[1] – 2, и т.д. Особенностью инициализации массивов является то, что их размер можно задавать только константами, а не переменными. Например, следующая программа приведет к ошибке при компиляции:
Поэтому при объявлении массивов обычно используют такой подход:
Следует отметить, что при инициализации массивов число их элементов должно совпадать с его размерностью. Рассмотрим вариант, когда число элементов при инициализации будет меньше размерности массива.
Результат работы программы будет следующим:
Из полученного результата видно, что неинициализированные элементы массива принимаются равными нулю. В случаях, когда число элементов при инициализации превышает размерность массива, то при компиляции произойдет ошибка. Поэтому, когда наперед неизвестно число элементов, целесообразно использовать такую конструкцию языка С++:
В результате инициализируется одномерный массив размерностью 6 элементов. Здесь остается последний вопрос: что будет, если значение индекса при обращении к элементу массива превысит его размерность? В этом случае ни программа, ни компилятор не выдадут значение об ошибке, но при этом в программе могут возникать непредвиденные ошибки. Поэтому программисту следует обращать особое внимание на то, чтобы индексы при обращении к элементам массива не выходили за его пределы. Также следует отметить, что первый элемент массива всегда имеет индекс 0, второй – 1, и т.д. Для хранения некоторых видов информации, например, изображений удобно пользоваться двумерными массивами. Объявление двумерных массивов осуществляется следующим образом:
Нумерация элементов также начинается с нуля, т.е. array2D[0][0] соответствует первому элементу, array2D[0][1] – элементу первой строки, второго столбца и т.д. Для начальной инициализации двумерного массива может использоваться следующая конструкция:
или
В общем случае можно задать массив любой размерности и правила работы с ними аналогичны правилам работы с одномерными и двумерными массивами.
Видео по теме
С++ с нуля: урок 1 - переменные, оператор присваивания С++ с нуля: урок 2 - арифметические операции С++ с нуля: урок 3 - директивы препроцессора С++ с нуля, урок 4: условные операторы if и switch С++ с нуля: урок 5 - операторы циклов while, for и do while С++ с нуля: урок 6 - массивы, метод всплывающего пузырька С++ с нуля: урок 7 - строки и функции работы с ними С++ с нуля: урок 8 - функции: прототипы, перегрузка, рекурсия С++ с нуля: урок 9 - области видимости переменных С++ с нуля: урок 10 - битовые операции И, ИЛИ, НЕ, XOR С++ с нуля: урок 11 - структуры С++ с нуля: урок 12 - объединения, перечисления, typedef С++ с нуля: урок 13 - указатели и ссылки, выделение памяти С++ с нуля: урок 14 (часть 1) - функции работы с файлами С++ с нуля: урок 14 (часть 2) - функции работы с файлами С++ с нуля: урок 15 - стек, теория и практика С++ с нуля: урок 16 - связные списки, теория и практика С++ с нуля: урок 17 - бинарное дерево, теория и практика
|