Оголошення, визначення і виклик функції

Функція - це іменована область коду, яка може бути викликана з інших частин програми. Функції також часто називаються підпрограмами. У будь-якій програмі на C ++ обов'язково повинна бути як мінімум одна функція - з ім'ям main. У всіх прикладах програм, наведених раніше, це була єдина функція в програмі. З неї починається виконання програми, але в реальних додатках крім неї створюються і інші функції, які викликаються з main і один з одного.

тіп_результата імя_функциі (спісок_параметров)

Перший рядок називається заголовком функції. У ній описується:

- Тип результату - тип даних значення, яке повертає функція в результаті своєї роботи. У C ++, на відміну від деяких мов програмування, немає поняття процедури - підпрограми, що не повертає значення. Тому якщо функція не повинна повертати значення, як тип результату вказується void.

- Ім'я - назва функції, тобто будь-який допустимий в C ++ ідентифікатор. Ім'я потім буде використано для виклику функції.

Після заголовка функції в фігурних дужках слід тіло функції - послідовність інструкцій, що будуть виконуватися при виконанні функції.

Якщо функція має тип результату, відмінний від void, то вона обов'язково повинна повернути будь-яке значення. Це здійснюється за допомогою оператора return вираз ;. Даний оператор відразу ж перериває виконання функції і повертає вказане значення.

Якщо функція не повертає значення, то вихід з неї відбувається після виконання останньої інструкції в тілі, а оператор return необов'язковий. Якщо ж він використовується, то повертається значення після нього не вказується, тобто він записується у вигляді return;

Тіло функції не може містити визначення інших функцій, тобто функції в C ++ не можуть бути вкладеними.

Приклади визначення функції:

// визначення максимуму двох чисел

int max (int a, int b)

return (a> b). a. b;

// визначення середнього арифметичного трьох чисел

float avg (int num1, int num2, int num3)

return (num1 + num2 + num3) / 3.0;

// вивід на екран двовимірного динамічного масиву

void print (double ** arr, int rows, int cols)

for (int i = 0; i for (int j = 0; j for (int i = 0; i

m [i] = new double [3];

//. заповнення масиву m

У прикладі в якості одного з параметрів функції avg вказується виклик функції max. У цьому випадку програма спочатку викличе max, після чого викличе avg, використавши в якості третьої аргументу значення, яке поверне max.

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

Приклади прототипів для описаних функцій:

// найчастіше прототип повністю збігається з заголовком визначення

int max (int a, int b);

// імена параметрів можна не вказувати

float avg (int, int, int);

// можна вказати інші імена - але навіщо заплутувати ситуацію?

void print (double ** matrix, int n, int m);

Стандартні заголовки (iostream, math.h, string.h, stdio.h і т.д.) містять саме прототипи функцій. Їх реалізації міститися в системних бібліотеках, що поставляються разом із середовищем розробки.