Функции, общие понятия.

 

С использованием функций в языке С связаны понятия, которые условно можно разделить на две группы.

В первую группу входят определение, прототип и вызов функции - все три понятия связанны с подготовкой функции к работе.

Вторая группа, параметры и возвращаемое значение, обеспечивает связь функции с «внешней средой». Функция может многократно вызываться из различных частей программы, при этом необходимообеспечить её связь с вызывающей программой, из вызывающей программы в функцию передать необходимые для работы данные, а по окончанию работы принять результат.

Определение функции – это описание действий, выполняемых функцией согласно требованиям алгоритма. Именно эта часть программы будет впоследствии многократно вызываться из других частей программы.

Вызов функции обеспечивает связь с вызывающей программой. При вызове:

· передаются параметры из вызывающей программы в функцию

· управление передается первой инструкции в теле функции,

· после завершения работы функции в вызывающую программу передается возвращаемое значение, управление возвращается в точку вызова.

Прототип функции (объявление) используется в том случае, если вызов функции предшествует её определению или если определение и вызовы функции находятся в разных файлах.

Определение функции состоит из заголовка и тела, например :

 

double f1 (int a, int f) //заголовок

{ … } // тело

В данном примере определена функцияf1с двумя параметрамиint aиint f , возвращающая значение типа double

Тип функции (в нашем примере double) определяет тип значения, которое возвращает функция. Если тип не указан, то предполагается, что функция возвращает целое значение, типа int. Если функция не должна возвращать значение, то используется тип void, который в данном случае означает отсутствие значения. В языке С функция может возвращать только одно значение, для этого её выполнение следует завершить оператором return, содержащим некоторое выражение. Следует отметить, что тип функции в определении должен соответствовать типу выражения оператора return в её теле.

 

В заголовке функции параметры называются формальными ( в нашем примере int a, int f), и служат для её связи с вызывающей программой. Формальные параметры создаются в начале работы функции – это локальные переменные, которые инициализируются значениями, полученными из вызывающей программы при вызове функции. Параметры при вызове функции получают конкретные значения и называются фактическими параметрами, например вызов функции может выглядеть так :

double z;

int s1=10;

z = f1(s1, 5); //вызов функции f1, s1 и 5 фактические параметры