Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_Лаб_Гриф.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
2.81 Mб
Скачать

Синтаксис визначення функцій

Синтаксис визначення функцій у С має наступний вигляд:

[Клас_пам'яті] [ Тип_значення_що_повертається ] Ім'я

( [ Список_оголошень_формальних_параметрів ] )

{ [ <Оголошення перемінних> ]

< Оператори >

[ Return Значення_типу_що_повертається ]

}

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

Список_оголошень_формальних_параметрів функції може бути відсутнім (void), містити одне чи більше оголошень формальних параметрів, що є аргументами даної функції. Оголошення параметрів в списку розділяються комами і мають такий синтаксис:

[ <Модифікатор> ] Тип_параметру Ім'я

Як модифікатори можуть використовуватися наступні ключові слова: const, near, far, huge.

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

double summa(float x, float y)

//Вимагає два параметри

{ return x+y; } //Значення, що

// повертається, перетворюється

// до типу double

void myPrint(void) //Без параметрів

// і значення, що повертається

{ printf (n\ ”Приклад \n”);

} // return є відсутнім

Функція summa( ) має два параметри і тип значення, що повертається double. Функція myPrint( ) не має параметрів і значення, що повертається.

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

Приклад inline – функції:

inline long square(int num)

{ return num*num; }

У прикладі визначена inline функція square ( ), що повертає квадрат параметра num типу int. Значення, що повертається, перетворюється до типу long.

Використання локальних і глобальних перемінних у функціях. Виклик функції

У будь-якій функції можна оголошувати локальні і глобальні константи і перемінні. Область дії локальних констант і перемінних обмежена тілом функції- хазяїна. Ніяка функція не може безпосередньо одержати доступ до локальних констант і перемінних інших функцій. Існує два класи пам'яті локальних перемінних: register і auto, що вказуються перед типом перемінних. Локальні перемінні створюються кожний раз, коли функція починає виконуватися, а коли функція завершує роботу, система усуває локальні перемінні.

На відміну від автоматичних перемінних, статичні перемінні (із класом пам'яті static) зберігають своє значення між викликами функції. Ця особливість дозволяє у функціях використовувати значення, обчислені при попередньому виклику. Статична перемінна ініціалізується один раз при першому виклику функції чи явно за умовчанням нульовим значенням. Ініціалізація статичних перемінних дозволяє, наприклад, функції-хазяїну визначити, чи виконується вона вперше.

Приклад статичних перемінних, оголошених у функції

int сalc( void )

{ static int sna = 2;

static float fob;

//Інші оголошення та оператори

return ………;

}

У прикладі оголошена і явно ініціалізована статична перемінна sna, а також ініціалізована неявно перемінна fob (за умовчанням дорівнює 0). Ці перемінні зберігають свої значення між викликами функції сalc ( ).