Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
23.03.2015
Размер:
161.28 Кб
Скачать

Масиви як параметри функцій

У тіло функції в якості аргументів можна передавати значення, що зберігаються в масивах. При виклику функції, параметр типу масиву перетворюється компілятором у вказівник на тип масиву. Наприклад, якщо аргумент масив має тип unsigned long, при виклику він буде перетворений в unsigned long*. Таким чином, зміна у функції значення будь-якого елемента масиву, що є аргументом, обов'язково вплине й на оригінал. Масиви відрізняються від інших типів тим, що їх не можна передавати за значенням - усередину тіла функції попадає тільки адреса масиву.

Синтаксис виклику функції при цьому може бути наступним:

FunctionName ( ArrayName ) ;

Тоді прототип функції включає вказівник, як параметр типу переданого масиву й наступних за ним прямокутних дужок. Наприклад:

FunctionName ( char [ ] ) ;

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

char FunctionName ( char& ) ;

При цьому синтаксис виклику функції приймає наступний вид:

FunctionName (*ArrayName ) ;

Нижче приводиться приклад, що ілюструє обидва варіанта передачі масиву як параметра функції.

#include <iostream.h>

void Out1 ( int [ ], short ) ; // прототип першої функції

void Out2 ( int&, short ) ; // прототип другої функції

void main ()

{

int Array [ ] = {10, 8, 6, 4, 2, 0 } ; // оголошення й ініціалізація масиву

short n ; // розмір масиву

n = sizeof ( Array ) / sizeof ( Array [0] ) ;

Out1 ( Array, n ) ; // виклик першої функції

Out2 ( *Array, n ) ; // виклик другої функції

}

void Out1 ( int arr [ ], short n ) // реалізація першої функції

{

for ( int i = 0 ; i < n ; i++) cout << arr [ i ] << ‘ \t ‘ ;

cout << ' \n ' ;

}

void Out2 ( int& arr, short n ) // реалізація другої функції

{

for ( int i = 0 ; i < n ; i++) cout << *( & ( arr ) + i ) << ‘ \t ‘ ;

cout << ' \n ' ;

}

У розглянутому прикладі оголошується масив Array[], що містить шість цілих значень, і здійснюється його передача у функції Out1 і Out2. Обидві функції виконують те саме дію – виводять уміст масиву аргументу на друк. Функція Out1 одержує в якості параметра вказівник на масив, а функція Out2 – посилання на масив. Крім того, оголошується, ініціалізується й передається в якості параметра змінна n, яка зберігає кількість елементів масиву.

Використання в якості параметра функції багатомірного масиву утруднене, тому на практиці найчастіше здійснюється передача масиву вказівників, що значно спрощує синтаксис.

Выжол Ю.А.