Урок #6

Двовимірні і одномірні масиви

Одномірні масиви

Досить часто нам доводиться мати справу з набором даних одного типу. Це можна реалізувати за допомогою масиву. Масив являє собою сукупність елементів одного типу, які мають одну спільну ім’я. Звертатися до цих елементів можна за допомогою індексації, оскільки всі ці елементи в пам’яті розташовані по порядку. Масив оголошується наступним чином: int arr[10]. Тут int – тип елементів масиву, arr – його назва, а в квадратних дужках – кількість його елементів, яке задається або литералом типу numeric, або константою. Але варто пам’ятати, що в 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