Назад Зміст Вперед

Одновимірний масив як параметр функції

Масив у С++ ніколи не передається за значенням, а лише як вказівник на його нульовий елемент.

Тобто, нам доступна адреса, за якою ми можемо звертатися за значеннями.

Це дозволяє функції працювати відразу ж із масивом, а не з його копією. Але, якщо передається адреса, то в середині функції невідомо скільки в масиві елементів. Тому потрібен ще один параметр - кількість елементів у масиві.

Перший параметр це масив (точніше адреса початку масиву), другий параметр кількість елементів у масиві. Такі прототипи функції будуть по суті рівноцінними:


void print (int numbers[],int n);
void print (int* numbers, int n);

Наприклад,

#include <iostream>  // Підключаємо бібліотеку для роботи з вводом/виводом
using namespace std;  // Дозволяємо використовувати імена з std без префікса

// Оголошення функції print, яка друкує масив чисел
// numbers - вказівник на початок масиву
// n - кількість елементів у масиві
void print(int* numbers, int n);

int main() {
    // Створюємо масив з 5 цілих чисел
    int myArray[] = {0, 1, 2, 3, 4};
    
    // Викликаємо функцію print для друку масиву
    print(myArray, 5);
    
    return 0;  // Повертаємо 0, що означає успішне завершення програми
}

// Реалізація функції print
void print(int* numbers, int n) {
    // Цикл для проходження по всіх елементах масиву
    for (int i = 0; i < n; i++) {
        // Друкуємо поточний елемент масиву та пробіл
        cout << numbers[i] << " ";
    }
}

Однак, всередині функції, ми звертаємося до елементів масиву за індексом, не використовуємо розіменування, яке необхідно, щоб отримати значення за адресою.

Це можливо, оскільки оператор [] перегружений для вказівників і дозволяє доступ до елементів масиву. Коли ми пишемо numbers[i], це еквівалентно *(numbers + i), де numbers — це адреса початку масиву, а i — індекс. Таким чином, numbers[i] означає "доступ до елемента за адресою numbers + i".

Назад Зміст Вперед