Процедурное программирование на языке С. Часть 1. Основные понятия языка С: Методические указания к лабораторным работам по курсам «Алгоритмические языки и программирование» и «Процедурное программирование», страница 6

<имя функции> К функции можно обратиться (вызвать ее) по ее имени, в качестве имени функции может служить любой идентификатор, не совпадающий со служебными словами и с именами других объектов программы. В отличие от класса памяти и типа возвращаемого значения имя функции всегда должно присутствовать в ее заголовке. Также обязательными атрибутами любой функции являются круглые скобки, в которых может присутствовать список формальных параметров функции.

([<список формальных параметров>])

Формальные параметры – это переменные, которые принимают значения, передаваемые функции при ее вызове в соответствии с порядком следования их имен в списке параметров. Другими словами, после компиляции функции с каждым формальным параметром ассоциируются некоторые байты оперативной памяти, конкретное значение заносится в эти байты только в момент вызова функции. Именно поэтому такой параметр  носит название «формальный»: при описании функции он, имея только имя, но не значение, присутствует в правилах (в исполнимых операторах) тела функции, описывающих процесс получения результата.

Список формальных параметров обязательно состоит из имен формальных параметров, имена разделяются символом  «запятая». Перед именем каждого формального параметра можно указать его тип. Если тип формального параметра не указан в заголовке функции, то его следует указать перед телом функции.

Замечание. После последнего идентификатора (имени параметра) в списке, может стоять многоточие, т.е. символы «…». Многоточие означает, что число параметров у функции переменно, однако не меньше, чем количество идентификаторов в списке. Примерами функций с переменным количеством параметров являются библиотечные функции printf() и scanf().

Пример 2.1. Заголовки функций.

1. voidmain (void) – это заголовок главной функции, которой передается управление из операционной системы при запуске программы. В соответствии с данным заголовком главная функция не возвращает и не получает никаких значений.

2. voidfunction1 (unsignedintd) – это заголовок  функции с именем function1, которая при вызове получит значение параметра d, тип значения формального параметра – unsignedint . Функция не возвращает значения.

3. function2(charv,…)  – это заголовок  функции с именем function2, которая при вызове получит значение параметра v, тип значения формального параметра – char. Функция  возвращает значение, имеющее тип int.

4. floatfunction3 (charp, intg) – это заголовок  функции с именем function3, которая при вызове получит значения двух параметров pи g, типы значений формальных параметров – charи int, соответственно. Функция  возвращает значение типа  float.

           Перейдем к рассмотрению тела функции. В качестве исполнимых операторов тела функции  можно использовать любые операторы языка С, в том числе и операторы вызова любых функций, описанных в программе, и библиотечных функций.  Особого внимания требует оператор return.

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

Формат оператора return:

return [<выражение>] ;

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

Правило 2.3. Тип возвращаемого функцией значения должен совпадать с типом выражения в операторе return.  Для функции, не возвращающей значения, должен быть использован тип void.

Правило 2.4. В теле одной функции нельзя делать описание другой функции.