120
<возвращаемое значение>. Оператор return кроме этого переда-
ет управление в вызывающую функцию. Таким образом, опера-
тор может служить и для окончания работы функции. При вызо-
ве функции формальные аргументы заменяются реальными ар-
гументами.
Механизм работы модульной программы может быть опи-
сан следующим образом:
- при компиляции программы, имеющей пользовательские
функции, для каждой функции создается отдельный исполняе-
мый код;
- при вызове функции выполнение программы прерывает-
ся, все данные программы сохраняются в стеке, начинает вы-
полняться код тела функции, при этом происходит замена фор-
мальных аргументов на реальные, с которыми была вызвана
функция;
- при достижении оператора return или закрывающей фи-
гурной скобки функции управление передается в точку вызова
вызывающей функции, при этом из стека возвращаются все со-
храненные параметры.
Тело функции может быть описано и после тела вызываю-
щей функции или даже в другом файле, но в этом случае необ-
ходимо использовать прототипы функции. Прототипом функции
называется указание типа возвращаемого результата, имени функ-
ции и списка типов формальных аргументов. Например, для функ-
ции min прототип будет выглядеть следующим образом:
int min(int,int,int);
При этом само тело функции может располагаться как по-
сле функции main(), так и в другом файле. Использование про-
тотипов связано с принципом обязательного первоначального
описания объектов, используемых в программе, то есть, как и
любую переменную, функцию необходимо описать перед ее ис-
пользованием.
Использование прототипов позволяет объединять функции
в библиотеки. Для каждой библиотеки может быть написан за-
головочный файл с расширением h, в котором будут перечисле-
ны прототипы всех функций библиотеки. Тела функций при
этом могут храниться в отдельном файле с расширением c (cpp).