Функция – это независимое множество операторов для выполнения некоторой задачи.
Определение функции:
заголовок функции
{ тело функции}
В заголовке функции указывается класс_памяти описатель_типа имя (список параметров) описание_параметров. Тело функции – это простой оператор, или группа операторов.
Класс памяти определяется с помощью ключевых слов extern или static. Внешний (extern) класс памяти означает, что функция будет доступна, как в данном программном модуле, так и в других отдельно скомпилированных модулей.
Статический ( static) класс памяти означает, что функция будет доступна только в модуле, ограниченным данным исходным файлом.
По умолчанию принимается класс памяти внешний (extern).
Описатель типа функции определяет тип, возвращаемого значения в вызываемую функцию.
Для задания описателя типа используются ключевые слова shot, long, unsigned, int, char, float, double, произвольный тип, void. Типы shot и char автоматически преобразуются в int, а float в double.
Описатель void используется в том случае, если функция не возвращает значение. Например, если функция осуществляет только печать некоторых значений. По умолчанию принимается тип int.
Описатель типа в заголовке должен соответствовать описателю типа, используемого при объявлении в вызывающей функции.
Имя – это любой идентификатор языка " C ". После имени обязательно круглые скобки, независимо от того имеет функция параметры или нет.
Список параметров – это список имен переменных, к которым будут ставиться в соответствии значения аргументов при обращении к функции. Элементы списка параметров отделяются друг от друга запятыми. Список параметров заключается в круглые скобки. После закрывающей круглой скобки, ограничивающей список параметров должны следовать описания типа всех элементов из списка параметров.
Рекомендуется описание каждого параметра размещать с новой строки, если описание какого-либо параметра отсутствует, то по умолчанию этот параметр имеет тип int и автоматический класс памяти.
Список параметров может отсутствовать, в этом случае после имени функции обязательно должны быть круглые скобки. При использовании функции всегда возникает отношение вызова между 2-мя функциями. Одна из них становится вызывающей и временно передает управление вызываемой функции. Возможно многоуровневое вложение функции. Автоматические (локальные) переменные действительны только в теле функции, в которой они объявлены. После выхода из функции значение этих переменных теряются. Автоматические переменные являются локальными, никакая функция не имеет доступа к локальной переменной в другой функции, даже если имя переменной в этой функции такое же, как и в других функциях.
Пример 1:
void / * функция не возвращает никакого значения * /
f1 ( s1,n) / * имя функции и список параметров * /
int * s1;
int n; / * описание параметров * /
{ int i;
for ( i = 0; i<n, i++) / * тело функции * /
printf(" % d % C ",* (s1 + i),(i % 10 = = 9 ||i = = n-1)?'n':");
}
Пример2:
main ( ) / * функция не содержит параметров * /
{ int a;
char c; / * переменные а и с являются локальными * /
a = 3;
c = a;
printf ( " a = % d, c = % c ", a,c );
}
Пример ( наименьшая функция)
f ( )
{
}
Не имеет описателя типа-списка параметров, списка объявления параметров и не одного оператора. Используется при построении большой программы для того, чтобы отметить место, где будет происходить дальнейшее развитие.