Функции в языке СИ
Функция – это синтаксически выделенный именованный программный модуль, выполняющий определенное действие или группу действий. Каждая функция имеет свой интерфейс и реализацию. Интерфейс функции – заголовок функции, в котором указывается название функции, список ее параметров и тип возвращаемого значения.Реализация функции – тело функции, содержащее внутренние (локальные) данные функции и программный код, выполняющий действия согласно переданным в функцию параметрам и возвращающий значение, соответствующего интерфейсу функции типа.С точки зрения программиста функции бывают:
библиотечные – функции описанные в библиотеках функций языка СИ (как стандартных, так и не стандартных);
пользовательские – функции реализованные программистом в процессе разработки программы.
Описание функции на языке СИ осуществляется в любом месте программы вне описания других функций и состоит из трех элементов:
1. прототип функции;
2. заголовок функции;
3. тело функции.
Прототип функции – необязательная часть описания функции, предназначенная для объявления некоторой функции, интерфейс которой соответствует данному прототипу.Объявление прототипа имеет следующий вид:
тип имя(список типов формальных параметров);
Параметры функции – значения, передаваемые в функцию при ее вызове. Выделяют понятия: формальные и фактические параметры. Формальные параметры – переменные, описываемые при объявлении функции в ее прототипе и заголовке и используемые в программном коде тела функции. Фактические параметры – переменные, выражения, константные значения или вызовы других функций, указываемые при непосредственном вызове функции внутри другой функции.
Прототип функции. В СИ можно объявлять прототип функции, а уже после описывать ее реализацию. Примеры прототипов:
int func(int, double, double);
void func(int, char *);
double func(void);
Заголовок функции – описание интерфейсной части функции, которая содержит: тип возвращаемого значения, имя функции и список формальных параметров функции. Синтаксис объявления заголовка функции:
тип имя(список формальных параметров)
Каждый элемент (формальный параметр) имеет следующий формат объявления:
тип имя
Примеры заголовков функций:
int func(int i, double x, double y)
void func(int ind, char *string)
double func(void)
Тело функции – часть-реализация, содержащая программный код, выполняемый при вызове функции. Тело функции всегда следует сразу после заголовка функции (разделять их нельзя) и заключено в фигурные скобки.
Пример:
Реализация функции на СИ для вычисления факториала числа.
double factorial(unsigned);
...
double factorial(unsigned num)
{
double fact = 1.0;
for(unsigned i=1;i<=num;i++)
fact *= (double)i;
return fact;
}
Следующая статья будет о препроцессоре в СИ.