Масиви можна використовувати як параметри функцій. Нагадаємо, що передача аргументів у функцію здійснюється:
- за значенням;
- через посилання;
- через покажчики.
Під час передачі параметрів за значенням у функцію потрапляють їх копії, тому функція не може змінити значення цих аргументів. Проте передача параметрів через посилання або покажчик забезпечую модифікацію таких змінних.
В С++ масиви завжди передаються функціями через покажчики. Це пов’язано з тим, що ім’я масиву є покажчиком на його перший елемент:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> using namespace std; int main() { int mas[5] = {4, -2, 5, 1, 3}; cout << "First element adress = " << mas << endl; cout << "First element adress = " << &mas[0] << endl; return 0; } |
В результаті виконання програми побачимо, що і по імені масиву mas
, і по адресі першого елемента &mas[0]
виводиться та ж сама адреса комірки пам’яті:
Разом з покажчиком на масив слід передавати кількість елементів масиву, тому що покажчик на масив визначає адресу його першого елемента, а обсяг пам’яті, що її займає масив, визначатиметься кількістю елементів. Використання адрес елементів масиву забезпечує можливість безпосередньо змінювати їх вміст.
Наприклад. Заповнити масив цілими числами від 1 до n:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using namespace std; void fillMass(int mas[], int n);//оголошення функції (прототип) int main() { const int N = 5; int mas[N]; //оголошення масива fillMass(mas, N); //виклик функції return 0; } // визначення функції: void fillMass(int mas[], int n) { for (int i = 0; i < n; i++) mas[i] = i+1; } |
У визначенні функції параметр int mas[]
визначає покажчик на масив, параметр int n
– кількість елементів масиву, яка буде оброблена. Розмір масиву в квадратних дужках писати не потрібно, компілятор його буде ігнорувати.
Для того, щоб викликати функцію з параметром масивом необхідно вказати в якості параметру функції тільки назву масиву без дужок: fillMass (mas, n)
.
Примітка! Виклик функції
fillMass(mass[n], size)
передасть у функцію не масив, а значення елемента з індексомn
, що викличе помилку компілятора.Синтаксис посилань у вигляді
&
не застосовується до імені масиву під час оголошення його у функції.