прототипи функцій
Особливістю стандарту 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);