Урок #6

Двумерные и одномерные массивы

Одномерные массивы

Довольно часто нам приходится иметь дело с набором данных одного типа. Это можно реализовать при помощи массива. Массив представляет собой совокупность элементов одного типа, которые имеют одно общее имя. Обращаться к этим элементам можно при помощи индексации, так как все эти элементы в памяти расположены по порядку. Массив объявляется так: int arr[10]. Здесь int — тип элементов массива, arr — его название, а в квадратных скобочках — количество его элементов, которое задается или литералов перечисляемого типа, или константой. Но стоит помнить, что в C++ индексация массива начинается с нуля, поэтому в данном примере существуют 10 элементов, и первый имеет адрес 0, а десятый — 9. Обращаться к этим элементам можно при помощи квадратных скобок: arr[4]. При этом будет получен доступ к пятому элементу, а не четвертому (не надо забывать о индексации с нуля). Для закрепления знаний напишем такую программу:

Как мы видим, if в данном случае предостерегает нас от выхода за пределы массива. C++ не следит за этим, поэтому вся ответственность положена на программиста. Если же убрать этот if и попытаться получить доступ к элементу с индексами 10, 11 или даже 20, то в консоли мы увидим какой-то мусор, или вообще попытаемся затронуть память другого процесса и наша программа завершит свою работу.

Двумерные массивы

Иногда приходится хранить двумерные массивы, то есть некие “прямоугольники”. Например, таблица умножения. Для таблицы умножения до 12 воспользуемся двумерным массивом 12*12. Объявляется он таким образом: int arr[12][12]. Попробуйте сами написать код программы, которая генерирует таблицу умножения в массиве. Сразу могу сказать, что эта программа будет содержать два цикла: первый будет изменять переменную i от 0 до 11, а второй будет изменять j с таким же диапазоном. Каждый раз будем присваивать ячейке массива с индексами (i; j) значение (i + 1) * (j + 1), так как нумерация начинается с нуля и без увеличения переменной на 1, мы получили бы в первом столбце и в первой строке нашего двумерного массива одни нули. Если написать программу не получается, загляните в блок ниже.

Инициализация массивов

Массивам, как и обычным переменным, можно присвоить значение при объявлении. Делается это с помощью фигурных скобок: int arr[3] = {2, 4, 8}. Так же, согласно стандарту C++11, знак = можно опустить, при этом ничего не изменится, только форма записи потеряла один знак. Если объявлять массив и сразу же присваивать его элементам некие значения, количество его элементов можно не указывать: int arr[] {2, 4, 8}. Это довольно полезно, когда создается массив с некой числовой последовательностью и мы не знаем сколько именно элементов будет содержать данный массив. Инициализацию разрешается использовать только при объявлении массива, так как C++ требует, что бы на момент компиляции размер массива был известен. Точно так же можно и задавать начальные значения и двумерным массивам. При этом мы должны их воспринимать как массив массивов, то есть так: int arr[][] {{1, 2, 3}, {4, 5, 6}}.

Возможные вопросы по теме:

Вопросов еще нет

Добавляйте свои вопросы в комментарии. Лучшие попадут в статью 🙂


Урок #5 Урок #7