Масиви в C ++ - Заявити - Ініціалізувати - Вказівник на приклади масиву

Зміст:

Anonim

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

Масив - це структура даних, яка послідовно зберігає елемент того самого типу даних. Масив 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];
  • Ім'я масиву - це ім'я масиву.
  • Розмір - це кількість елементів, що зберігаються в масиві.

Наприклад:

#include using namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout <

Вихід:

Ось скріншот коду:

Пояснення коду:

  1. Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
  2. Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
  3. Виклик функції main (), всередині якої слід додати логіку програми.
  4. Початок тіла основної () функції.
  5. Оголошення масиву з іменем age для зберігання 5 цілих чисел. 5 цілих чисел також були ініціалізовані.
  6. Створіть цілочисельну змінну x, використовуючи цикл for.
  7. Початок тіла циклу for.
  8. Використовуючи змінну циклу x для перебору значень віку масиву та друку їх на консолі. "\ N" - символ нового рядка, який друкується в новому рядку після кожної ітерації.
  9. Кінець корпусу петлі.
  10. Кінець тіла основної () функції.

Багатовимірний масив

Це масив, в якому елементи даних розташовані так, щоб утворювати масив масивів. Багатовимірний масив може мати будь-яку кількість вимірів, але двовимірні та тривимірні масиви є загальними. Синтаксис:

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-масив:

#include using 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[" <

Вихід:

Ось знімок екрана вищевказаного коду:

Пояснення коду:

  1. Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
  2. Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
  3. Виклик функції main (), до якої слід додати код.
  4. Початок тіла основної () функції.
  5. Коментар. Компілятор C ++ пропустить це.
  6. Оголошення 2D-масиву з 3 рядків і 2 стовпців. Елементи також були додані до масиву.
  7. Коментар. Компілятор C ++ пропустить це.
  8. Створення змінної i за допомогою циклу for. Ця змінна буде перебирати індекси рядків масиву.
  9. Створення змінної j за допомогою циклу for для циклу. Ця змінна буде перебирати індекси стовпців масиву.
  10. Початок корпусу петель.
  11. Надрукуйте значення змінних i та j на консолі всередині квадратних дужок на консолі.
  12. Роздрукуйте значення, що зберігається в індексі [i] [j] масиву a.
  13. Кінець корпусу петель.
  14. Функція main () повинна повертати ціле значення, якщо програма працює нормально.
  15. Кінець тіла основної () функції.

Тривимірний масив

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";}

Вихід:

Ось скріншот коду:

Пояснення коду:

  1. Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
  2. Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
  3. Виклик функції main (), всередині якої слід додати логіку програми.
  4. Початок тіла основної () функції.
  5. Оголошення тривимірного масиву з іменем розміром 2x3x2. Значення масиву також були ініціалізовані.
  6. Доступ до елемента, що зберігається за індексом [0] [1] [0] масиву, та друк його на консолі.
  7. Доступ до елемента, що зберігається за індексом [0] [1] [1] масиву, та друк його на консолі.
  8. Кінець тіла основної () функції.

Вказівник на масив

Покажчик - це змінна, що містить адресу. Окрім використання вказівника для зберігання адреси змінної, ми можемо використовувати його для зберігання адреси комірки масиву. Ім'я масиву постійно вказує на його перший елемент. Розгляньте заяву, подану нижче:

int age[5];

Вік - це вказівник на $ age [0], адресу першого елемента масиву з іменем age. Розглянемо наступний приклад:

#include using namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;}

Вихід:

Зауважте, що перше значення вищезазначеного виводу може повертати інше значення залежно від адреси, призначеної першому елементу масиву в пам’яті комп’ютера.

Ось скріншот коду:

Пояснення коду:

  1. Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
  2. Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
  3. Виклик функції main (), всередині якої слід додати логіку програми.
  4. Початок тіла основної () функції.
  5. Оголошення змінної покажчика з ім'ям * john.
  6. Оголошення цілочисельного масиву з іменем age для зберігання 5 цілих чисел. Значення цілих чисел також були ініціалізовані.
  7. Присвоєння змінної john значення адреси елемента, що зберігається в першому індексі віку масиву.
  8. Друк значення змінної john, що є адресою елемента, що зберігається в першому індексі віку масиву.
  9. Друк першого значення, що зберігається у віці масиву.
  10. Кінець тіла основної () функції.

Імена масивів можуть використовуватися як постійні вказівники, і навпаки також вірно. Це означає, що ви можете отримати доступ до значення, що зберігається в індексі 3 віку масиву за допомогою * (вік + 3). Наприклад:

#include using 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;}

Вихід:

Ось скріншот коду:

Пояснення коду:

  1. Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
  2. Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
  3. Виклик функції main () та запуск тіла функції main ().
  4. Коментар. Компілятор C ++ пропустить це.
  5. Оголошення масиву з іменем age для зберігання 5 цілих чисел.
  6. Створення цілочисельного покажчика p.
  7. Присвоєння p значення адреси першого елемента віку масиву.
  8. Коментар. Компілятор C ++ пропустить це.
  9. Роздрукуйте текст на консолі.
  10. Створіть ціле число x, використовуючи цикл for. Значок {позначає початок тіла циклу for.
  11. Роздрукуйте значення x у поєднанні з деяким іншим текстом на консолі.
  12. Роздрукуйте значення * (p + x) на консолі.
  13. Кінець корпусу петлі.
  14. Роздрукуйте текст на консолі.
  15. Створіть змінну x за допомогою циклу for. Значок {позначає початок тіла циклу for.
  16. Роздрукуйте значення x від 0 до 4 поряд з деяким іншим текстом.
  17. Роздрукуйте значення * (вік + х).
  18. Кінець тіла циклу for.
  19. Повернути значення, якщо програма успішно працює.
  20. Кінець тіла основної () функції.

Доступ до значень масиву

Доступ до елементів масиву здійснюється за допомогою відповідних індексів. Індекс елемента, до якого потрібно отримати доступ, додається у квадратні дужки [] відразу після імені масиву. Наприклад:

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:"<

Вихід:

Ось скріншот коду:

Пояснення коду:

  1. Включення файлу заголовка iostream до нашого коду. Це дозволить нам читати та писати на консолі.
  2. Включаючи std простір імен, щоб використовувати його класи та функції, не викликаючи його.
  3. Виклик функції main (), до якої слід додати код.
  4. Початок тіла основної () функції.
  5. Оголошення масиву з іменем age для зберігання 5 цілочисельних елементів.
  6. Доступ до значення, що зберігається в індексі 2 віку масиву, та збереження його значення у змінній з іменем john.
  7. Друк значення змінної john на консолі поряд з іншим текстом.

Переваги масиву в C ++

Ось плюси / переваги використання Array в C ++:

  • Елементи масиву можна легко пройти.
  • Легко маніпулювати даними масиву.
  • Елементи масиву можна отримати випадковим чином.
  • Масиви полегшують оптимізацію коду; отже, ми можемо виконати багато роботи, використовуючи менше коду.
  • Легко сортувати дані масиву.

Недоліки масиву в C ++

  • Масив має фіксований розмір; отже, ми не можемо додавати до нього нові елементи після ініціалізації.
  • Виділення більше пам'яті, ніж вимагає, призводить до втрати місця в пам'яті, і менший обсяг пам'яті може створити проблему.
  • Кількість елементів, що зберігаються в масиві, повинна бути відома заздалегідь.

Резюме

  • Масив - це структура даних, яка зберігає елементи одного типу даних.
  • Елементи масиву зберігаються послідовно.
  • Елементи масиву позначаються за допомогою відповідних індексів. Перший елемент має індекс 0, а останній - індекс n-1, де загальна кількість елементів масиву.
  • Оголошення масиву передбачає визначення типів даних елементів масиву, а також кількості елементів, що зберігаються в масиві.
  • Одновимірний масив зберігає елементи послідовно.
  • Двовимірний масив зберігає елементи в рядках і стовпцях.
  • Тривимірний масив - це масив масивів.
  • Елементи можна додавати в масив, використовуючи їх індекси.
  • Доступ до елементів масиву здійснюється за допомогою їх індексів.
  • Багатовимірний масив має більше одного виміру.
  • Ім'я масиву вказує на його перший елемент.
  • Масиви мають фіксований розмір, що означає, що нові елементи не можуть бути додані до масиву після його ініціалізації.