Урок №77. Масиви

  Юрій  | 

  Оновл. 28 Чер 2020  | 

 258

В уроці про структури ми дізналися, що з їх допомогою можна об’єднувати змінні різних типів під одним ідентифікатором. Це ідеально, коли потрібно змоделювати об’єкт, який має багато різних властивостей. Однак зручність роботи зі структурами при наявності великої кількості елементів залишає бажати кращого.

Що таке масив?

На щастя, структури не є єдиним агрегованим типом даних в C++. Є ще масиви — типи даних, які дозволяють отримати доступ до всіх змінних одного і того ж типу даних через використання одного ідентифікатора.

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

З використанням масиву все набагато простіше. Наступний рядок еквівалентний коду вище:

В оголошенні змінної масиву ми використовуємо квадратні дужки [], щоб повідомити компілятору, що це змінна масиву (а не звичайна змінна), а в дужках — кількість виділених елементів (це називається довжиною або розміром масиву).

У вищенаведеному прикладі ми оголосили фіксований масив з ім’ям testResult, довжиною 30. Фіксований масив (або ще “масив фіксованої довжини“) — це масив, розмір якого відомий під час компіляції. При створенні testResult, компілятор виділить 30 цілочисельних змінних.

Елементи масиву

Кожна зі змінних в масиві називається елементом. Елементи не мають своїх власних унікальних імен. Замість цього для доступу до них використовується ім’я масиву разом з оператором індексу [] і параметром, який називається індекс, і який повідомляє компілятору, який елемент ми хочемо вибрати. Цей процес називається індексуванням масиву.

У вищенаведеному прикладі першим елементом в нашому масиві є testResult[0], другий — testResult[1], десятий — testResult[9], останній — testResult[29]. Добре, що вже не потрібно відстежувати і пам’ятати купу різних (хоч і схожих) імен змінних — для доступу до різних елементів потрібно змінити тільки індекс.

Важливо: Відлік в програмуванні і в С ++ завжди починається з 0, а не з 1!

Для масиву довжиною 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 Зірок (2 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *