Масиви C ++ (з прикладами)

У цьому уроці ми навчимося працювати з масивами. Ми навчимося декларувати, ініціалізувати та отримувати доступ до елементів масиву в програмуванні на C ++ за допомогою прикладів.

У C ++ масив - це змінна, яка може зберігати кілька значень одного типу. Наприклад,

Припустимо, у класі навчається 27 учнів, і нам потрібно зберігати оцінки всіх них. Замість того, щоб створювати 27 окремих змінних, ми можемо просто створити масив:

 double grade(27);

Тут оцінка - це масив, що вміщує максимум 27 елементів doubleтипу.

У C ++ розмір і тип масивів не можна змінювати після його оголошення.

Декларація масиву C ++

 dataType arrayName(arraySize);

Наприклад,

 int x(6);

Ось,

  • int - тип елемента, що зберігається
  • x - ім'я масиву
  • 6 - розмір масиву

Елементи доступу в масиві C ++

У C ++ кожен елемент масиву пов'язаний з числом. Число називається індексом масиву. Ми можемо отримати доступ до елементів масиву, використовуючи ці індекси.

 // syntax to access array elements array(index);

Розглянемо масив x, який ми бачили вище.

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

Кілька речей, які слід пам’ятати:

  • Індекси масивів починаються з 0. Значення x (0) - це перший елемент, що зберігається в індексі 0.
  • Якщо розмір масиву дорівнює n, останній елемент зберігається в індексі (n-1). У цьому прикладі x (5) є останнім елементом.
  • Елементи масиву мають послідовні адреси. Наприклад, припустимо, що початкова адреса x(0)- 2120d. Тоді адреса наступного елемента x(1)буде 2124d, адреса x(2)2128d тощо.
    Тут розмір кожного елемента збільшується на 4. Це тому, що розмір intдорівнює 4 байтам.

Ініціалізація масиву C ++

У C ++ можна ініціалізувати масив під час оголошення. Наприклад,

 // declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
Елементи масиву C ++ та їх дані

Інший метод ініціалізації масиву під час оголошення:

 // declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);

Тут ми не згадували розмір масиву. У таких випадках компілятор автоматично обчислює розмір.

Масив C ++ з порожніми членами

У C ++, якщо масив має розмір n, ми можемо зберігати до n кількості елементів у масиві. Однак що станеться, якщо ми збережемо менше n елементів.

Наприклад,

 // store only 3 elements in the array int x(6) = (19, 10, 8);

Тут масив x має розмір 6. Однак ми ініціалізували його лише 3 елементами.

У таких випадках компілятор призначає випадкові значення іншим місцям. Часто це випадкове значення просто 0.

Порожнім членам масиву автоматично присвоюється значення 0

Як вставити та надрукувати елементи масиву?

 int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);

Приклад 1: Відображення елементів масиву

 #include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )

Вихідні дані

 Цифри: 7 5 6 12 35 Цифри: 7 5 6 12 35

Тут ми використовували forцикл для ітерації від i = 0до i = 4. У кожній ітерації ми друкували numbers(i).

Ми знову використали діапазон, заснований на циклі для друку елементів масиву. Щоб дізнатись більше про цей цикл, перевірте C ++ Ranged for Loop.

Примітка: У нашому циклі на основі діапазону ми використовували код, const int &nа не int nяк декларацію діапазону. Однак цей const int &nваріант є кращим, оскільки:

  1. За допомогою int nпростого копіювання елементів масиву до змінної n під час кожної ітерації. Це не ефективно для пам'яті.
    & n, однак, використовує адресу пам'яті елементів масиву для доступу до їх даних, не копіюючи їх до нової змінної. Це ефективно для пам'яті.
  2. Ми просто друкуємо елементи масиву, а не змінюємо їх. Тому ми використовуємо const, щоб випадково не змінити значення масиву.

Приклад 2: беруть вхідні дані від користувача та зберігають їх у масиві

 #include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )

Вихідні дані

 Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15

Once again, we have used a for loop to iterate from i = 0 to i = 4. In each iteration, we took an input from the user and stored it in numbers(i).

Then, we used another for loop to print all the array elements.

Example 3: Display Sum and Average of Array Elements Using for Loop

 #include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )

Output

 The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333

In this program:

  1. We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
    Here, sum =0 and count = 0.
  2. Then we used a range based for loop to print the array elements. In each iteration of the loop, we add the current array element to sum.
  3. Ми також збільшуємо значення count на 1кожній ітерації, щоб ми могли отримати розмір масиву до кінця циклу for.
  4. Після друку всіх елементів ми друкуємо суму та середнє значення всіх чисел. Середнє значення чисел даноaverage = sum / count;

Примітка. Ми використовували діапазонний forцикл замість звичайного for.

Нормальний forцикл вимагає від нас ідентифікації кількості ітерацій, яка задається розміром масиву.

Але діапазонний forцикл не вимагає таких специфікацій.

Масив C ++ поза межами

Якщо ми оголосимо масив розміром 10, то масив буде містити елементи від індексу 0 до 9.

Однак, якщо ми спробуємо отримати доступ до елемента з індексом 10 або більше 10, це призведе до невизначеної поведінки.

Цікаві статті...