прототипи функцій

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

Синтаксис прототипу функції:

тип <имя функции>(Список параметрів);

або так: int func (int a, float b, char * с);

або так: int func (int, float, char *);

Прототипи стандартних функцій знаходяться в заголовних файлах (header files). Прикладами таких заголовків файлів є файли stdio.h, string.h. Крім цього в заголовних файлах знаходяться окремі визначення, які використовуються функціями.

Покажчики типу void

Ключове слово void в заголовках і прототипах функцій, означають що функції не приймають ніяких аргументів, або не повертають ніяких значень.

Покажчик типу void - це нетипізований покажчик:

Покажчик ptr вказує на якийсь об'єкт пам'яті з тимчасово невизначеним типом.

void half (void * val);

Однак, перед тим як виконувати операції над об'єктом за вказівником, необхідно визначити його тип. Це робиться за допомогою приведення типу.

Нехай pval - покажчик типу void. Тоді приведення його типу виконується наступним чином:

тип - тип даних, до якого наводиться покажчик. Наприклад, щоб привести покажчик pval до типу int, запишемо наступне: (int *) pval.

Щоб звернутися за вказівником pval до значення типу int, використовується такий вираз:

Т.ч. щоб скористатися покажчиком, функція повинна мати інформацію про те, на значення якого типу він вказує. Тобто необхідно повідомити функції тип змінної з чотирьох можливих - int, long, float, double.

Визначення функції можна змінити, наприклад, наступним, чином:

Void half (void * pval, char type);