logo search
ООП для Заоч / Пинчук Лозовская Программир на С

Void main()

{ for (;;) fun(1000);

}

Параметри функції з ініціалізацією

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

long F(int a, long x=0, long y=1)

{ ................................

}

Параметри, що ініціалізуються, повинні бути останніми в списку. Вони можуть не задаватися при виклику функції. Всі наступні виклики наведеної вище функції F є правильними: F(n,a,b) , F(n,a) , F(n) .

Модифікатори

У заголовку функції можна записувати спеціальні службові слова-модифікатори inline, extern, static, volatile.

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

Модифікатор extern використовується в багатофайлових програмах. Він вказує на те, що записаний далі заголовок функції являє собою попереднє оголошення функції. При цьому повне визначення функції може перебувати в іншому об’єктному файлі програми. Фактично це означає розширення простору, у якому діє ім'я функції на поточний об’єктний файл програми. Звичайно ім’я функції діє у просторі одного (поточного) об’єктного файлу програми.

Нижче наведено ще кілька корисних прикладів.

Раніше, як ілюстрація використання операторів циклу, наводилася програма визначення найбільшого загального дільника двох заданих цілих чисел. Нижче ці обчислення реалізовані у вигляді функції nod.

// Приклад 4

int nod(int a, int b)

{ int r; while (r=a%b) { a=b; b=r; }

return b;

}

Наведемо цікавий приклад побудови функції парного обміну swap для змінних типу int. Завдяки використанню побітової операції "^" (не еквівалентність), необхідність у застосуванні допоміжної (буферної) змінної відпадає. Для передачі параметрів використовуються посилання.

// Приклад 5