Що таке масив?
Масив - це структура даних, яка послідовно зберігає елемент того самого типу даних. Масив C ++ має фіксований розмір.
Ви можете бачити масив як набір змінних подібного типу даних. Замість того, щоб оголошувати кожну змінну та присвоювати їй значення окремо, ви можете оголосити одну змінну (масив) і додати до неї значення різних змінних. Кожне додане значення до масиву визначається індексом.
У цьому підручнику з C ++ ви дізнаєтесь:
- Що таке масив?
- Навіщо нам масиви?
- Оголосіть масив у C ++
- Ініціалізація масиву
- Типи масивів
- Одновимірний масив
- Багатовимірний масив
- Двовимірний масив
- Тривимірний масив
- Вказівник на масив
- Доступ до значень масиву
- Переваги масиву в C ++
- Недоліки масиву в C ++
Навіщо нам масиви?
Масиви дуже важливі в будь-якій мові програмування. Вони забезпечують більш зручний спосіб зберігати змінні або колекцію даних подібного типу даних разом, а не зберігати їх окремо. Кожне значення масиву буде доступне окремо.
Оголосіть масив у C ++
Оголошення масиву в C ++ передбачає вказівку типу, а також кількості елементів, що зберігаються масивом. Синтаксис:
type array-Name [ array-Size ];
Правила оголошення одновимірного масиву в C ++.
- Тип: тип - це тип елементів, що зберігаються в масиві, і він повинен бути дійсним типом даних C ++.
- Array-Name: Array-Name - це ім'я, яке присвоюється масиву.
- Array-Size: Array-Size - це кількість елементів, що зберігаються в масиві. Це має бути ціле число і більше 0.
Наприклад, ви можете створити масив із назвою вік і зберігати вік 5 студентів таким чином:
int age[5];
Вік масиву буде зберігати 5 цілих чисел, що представляють вік різних учнів.
Ініціалізація масиву
Ініціалізація масиву - це процес присвоєння / зберігання елементів масиву. Ініціалізація може бути виконана як в одному операторі, так і по одному. Зверніть увагу, що перший елемент масиву зберігається з індексом 0, тоді як останній елемент зберігається з індексом n-1, де n - загальна кількість елементів у масиві.
У випадку вікового масиву перший елемент зберігатиметься з індексом 0, а останній - з індексом 4.
Давайте використаємо віковий масив, щоб продемонструвати, як можна здійснити ініціалізацію масиву:
int age[5] = {19, 18, 21, 20, 17};
Загальна кількість елементів у {} не може перевищувати значення, вказане в []. Елемент 19 має індекс 0, 18 за індексом 1, 21 за індексом 2, 20 за індексом 3 та 17 за індексом 4. Якщо ви не вказали кількість елементів, що зберігаються в масиві в межах [], масив буде достатньо великим, щоб вмістити елементи, додані в межах {}. Наприклад:
int age[] = {19, 18, 21, 20, 17};
Наведений вище оператор створить точно такий же масив, що і попередній. Ви також можете призначити один елемент масиву, використовуючи його індекс. Наприклад:
age[3] = 20;
У наведеному вище операторі буде зберігатися значення 20 в індексі 3 масиву з іменем age. Це означає, що 20 буде 4- м елементом масиву.
Типи масивів
Існує два типи масивів C ++:
- Одновимірний масив
- Багатовимірний масив
- Вказівник на масив
Одновимірний масив
Це масив, в якому елементи даних розташовані лінійно лише в одному вимірі. Зазвичай його називають одновимірним масивом. Синтаксис:
datatype array-name[size];
- Ім'я масиву - це ім'я масиву.
- Розмір - це кількість елементів, що зберігаються в масиві.
Наприклад:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Вихід:
Ось скріншот коду:
Пояснення коду:
- Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
- Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
- Виклик функції main (), всередині якої слід додати логіку програми.
- Початок тіла основної () функції.
- Оголошення масиву з іменем age для зберігання 5 цілих чисел. 5 цілих чисел також були ініціалізовані.
- Створіть цілочисельну змінну x, використовуючи цикл for.
- Початок тіла циклу for.
- Використовуючи змінну циклу x для перебору значень віку масиву та друку їх на консолі. "\ N" - символ нового рядка, який друкується в новому рядку після кожної ітерації.
- Кінець корпусу петлі.
- Кінець тіла основної () функції.
Багатовимірний масив
Це масив, в якому елементи даних розташовані так, щоб утворювати масив масивів. Багатовимірний масив може мати будь-яку кількість вимірів, але двовимірні та тривимірні масиви є загальними. Синтаксис:
datatype array-name[d1][d2][d3]… [dn];Ім'я масиву - це ім'я масиву, який матиме n розмірів. Наприклад:
Двовимірний масив
2D-масив зберігає дані у списку з одновимірним масивом. Це матриця з рядками та стовпцями. Щоб оголосити 2D-масив, використовуйте такий синтаксис:
type array-Name [ x ][ y ];Тип повинен бути дійсним типом даних C ++. Дивіться 2D-масив як таблицю, де x позначає кількість рядків, а y - кількість стовпців. Це означає, що ви ідентифікуєте кожен елемент у 2D-масиві, використовуючи форму a [x] [y], де x - кількість рядків, а y - кількість стовпців, до яких належить елемент.
Ось приклад того, як ініціалізувати 2D-масив:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};У наведеному вище прикладі ми маємо 2D-масив, який можна розглядати як матрицю 2x3. Є 2 рядки та 3 стовпці. Елемент 0 може бути доступний як [0] [1], оскільки він розташований на перетині рядка з індексом 0 і стовпця з індексом 1. Елемент 3 може бути доступний як [1] [2], оскільки він розташований у перетин рядка з індексом 1 та стовпця з індексом 2.
Зверніть увагу, що ми просто додали фігурні дужки, щоб диференціювати різні рядки елементів. Ініціалізацію також можна було зробити наступним чином:
int a[2][3] = {0, 2, 1, 4, 3, 7};};Наступний приклад С ++ демонструє, як ініціалізувати та обвести 2D-масив:
#includeusing namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" < Вихід:
Ось знімок екрана вищевказаного коду:
Пояснення коду:
- Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
- Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
- Виклик функції main (), до якої слід додати код.
- Початок тіла основної () функції.
- Коментар. Компілятор C ++ пропустить це.
- Оголошення 2D-масиву з 3 рядків і 2 стовпців. Елементи також були додані до масиву.
- Коментар. Компілятор C ++ пропустить це.
- Створення змінної i за допомогою циклу for. Ця змінна буде перебирати індекси рядків масиву.
- Створення змінної j за допомогою циклу for для циклу. Ця змінна буде перебирати індекси стовпців масиву.
- Початок корпусу петель.
- Надрукуйте значення змінних i та j на консолі всередині квадратних дужок на консолі.
- Роздрукуйте значення, що зберігається в індексі [i] [j] масиву a.
- Кінець корпусу петель.
- Функція main () повинна повертати ціле значення, якщо програма працює нормально.
- Кінець тіла основної () функції.
Тривимірний масив
3D-масив - це масив масивів. Кожен елемент у 3D-масиві ідентифікується за допомогою набору з 3 індексів. Для доступу до елементів тривимірного масиву ми використовуємо три для циклів. Наприклад:
#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";} Вихід:
Ось скріншот коду:
Пояснення коду:
- Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
- Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
- Виклик функції main (), всередині якої слід додати логіку програми.
- Початок тіла основної () функції.
- Оголошення тривимірного масиву з іменем розміром 2x3x2. Значення масиву також були ініціалізовані.
- Доступ до елемента, що зберігається за індексом [0] [1] [0] масиву, та друк його на консолі.
- Доступ до елемента, що зберігається за індексом [0] [1] [1] масиву, та друк його на консолі.
- Кінець тіла основної () функції.
Вказівник на масив
Покажчик - це змінна, що містить адресу. Окрім використання вказівника для зберігання адреси змінної, ми можемо використовувати його для зберігання адреси комірки масиву. Ім'я масиву постійно вказує на його перший елемент. Розгляньте заяву, подану нижче:
int age[5];Вік - це вказівник на $ age [0], адресу першого елемента масиву з іменем age. Розглянемо наступний приклад:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Вихід:
Зауважте, що перше значення вищезазначеного виводу може повертати інше значення залежно від адреси, призначеної першому елементу масиву в пам’яті комп’ютера.
Ось скріншот коду:
Пояснення коду:
- Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
- Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
- Виклик функції main (), всередині якої слід додати логіку програми.
- Початок тіла основної () функції.
- Оголошення змінної покажчика з ім'ям * john.
- Оголошення цілочисельного масиву з іменем age для зберігання 5 цілих чисел. Значення цілих чисел також були ініціалізовані.
- Присвоєння змінної john значення адреси елемента, що зберігається в першому індексі віку масиву.
- Друк значення змінної john, що є адресою елемента, що зберігається в першому індексі віку масиву.
- Друк першого значення, що зберігається у віці масиву.
- Кінець тіла основної () функції.
Імена масивів можуть використовуватися як постійні вказівники, і навпаки також вірно. Це означає, що ви можете отримати доступ до значення, що зберігається в індексі 3 віку масиву за допомогою * (вік + 3). Наприклад:
#includeusing namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;} Вихід:
Ось скріншот коду:
Пояснення коду:
- Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
- Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
- Виклик функції main () та запуск тіла функції main ().
- Коментар. Компілятор C ++ пропустить це.
- Оголошення масиву з іменем age для зберігання 5 цілих чисел.
- Створення цілочисельного покажчика p.
- Присвоєння p значення адреси першого елемента віку масиву.
- Коментар. Компілятор C ++ пропустить це.
- Роздрукуйте текст на консолі.
- Створіть ціле число x, використовуючи цикл for. Значок {позначає початок тіла циклу for.
- Роздрукуйте значення x у поєднанні з деяким іншим текстом на консолі.
- Роздрукуйте значення * (p + x) на консолі.
- Кінець корпусу петлі.
- Роздрукуйте текст на консолі.
- Створіть змінну x за допомогою циклу for. Значок {позначає початок тіла циклу for.
- Роздрукуйте значення x від 0 до 4 поряд з деяким іншим текстом.
- Роздрукуйте значення * (вік + х).
- Кінець тіла циклу for.
- Повернути значення, якщо програма успішно працює.
- Кінець тіла основної () функції.
Доступ до значень масиву
Доступ до елементів масиву здійснюється за допомогою відповідних індексів. Індекс елемента, до якого потрібно отримати доступ, додається у квадратні дужки [] відразу після імені масиву. Наприклад:
int john = age[2];У наведеному вище прикладі ми просто заявляємо, що вік Джона зберігається в індексі 2 масиву з іменем age. Це означає, що вік Джона - це третє значення у віці масиву. Ось повний приклад на C ++, який показує, як отримати доступ та роздрукувати це значення:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Вихід:
Ось скріншот коду:
Пояснення коду:
- Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
- Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
- Виклик функції main (), до якої слід додати код.
- Початок тіла основної () функції.
- Оголошення масиву з іменем age для зберігання 5 цілочисельних елементів.
- Доступ до значення, що зберігається в індексі 2 віку масиву, та збереження його значення у змінній з іменем john.
- Друк значення змінної john на консолі поряд з іншим текстом.
Переваги масиву в C ++
Ось плюси / переваги використання Array в C ++:
- Елементи масиву можна легко пройти.
- Легко маніпулювати даними масиву.
- Елементи масиву можна отримати випадковим чином.
- Масиви полегшують оптимізацію коду; отже, ми можемо виконати багато роботи, використовуючи менше коду.
- Легко сортувати дані масиву.
Недоліки масиву в C ++
- Масив має фіксований розмір; отже, ми не можемо додавати до нього нові елементи після ініціалізації.
- Виділення більше пам'яті, ніж вимагає, призводить до втрати місця в пам'яті, і менший обсяг пам'яті може створити проблему.
- Кількість елементів, що зберігаються в масиві, повинна бути відома заздалегідь.
Резюме
- Масив - це структура даних, яка зберігає елементи одного типу даних.
- Елементи масиву зберігаються послідовно.
- Елементи масиву позначаються за допомогою відповідних індексів. Перший елемент має індекс 0, а останній - індекс n-1, де загальна кількість елементів масиву.
- Оголошення масиву передбачає визначення типів даних елементів масиву, а також кількості елементів, що зберігаються в масиві.
- Одновимірний масив зберігає елементи послідовно.
- Двовимірний масив зберігає елементи в рядках і стовпцях.
- Тривимірний масив - це масив масивів.
- Елементи можна додавати в масив, використовуючи їх індекси.
- Доступ до елементів масиву здійснюється за допомогою їх індексів.
- Багатовимірний масив має більше одного виміру.
- Ім'я масиву вказує на його перший елемент.
- Масиви мають фіксований розмір, що означає, що нові елементи не можуть бути додані до масиву після його ініціалізації.