В примере 2.2 приведено определение (описание) функции, вычисляющей факториал целого числа.
Пример 2.2.
intfact(intk) заголовок функции
{inti, j=1; определение
for (i=1; i<=k; i++) тело
j*= i; функции
returnj; функции
}
В данном примере идентификатор k используется в качестве имени единственного формального параметра функции, jи i – имена локальных переменных функции, j – имя переменной, которое используется в качестве возвращаемого значения.
Описания используемых в программе функций могут следовать в любом месте программы: за описанием функции main(), перед ним, находится в другом файле. Однако для того, чтобы компилятор мог осуществить проверку соответствия типов передаваемых в функцию значений типам формальных параметров, необходимо выполнять правило 2.5.
Правило 2.5. Перед вызовом любой функции в программе она (функция) должна быть либо объявлена, либо определена.
Объявление (прототип) функции имеет такой же вид, что и определение функции, с той лишь разницей, что отсутствуют тело функции и (возможно) имена формальных параметров.
Объявление (прототип) функции имеет следующий формат:
[<спецификация класса памяти>][<спецификация типа возвращаемого значения>] <имя функции>([<список формальных параметров>]) ;
В отличие от определения функции, в прототипе за заголовком сразу же следует точка с запятой, а список формальных параметров может не содержать имена переменных. Правила использования остальных элементов формата такие же, как при определении функции.
Для функции с именем fact , вычисляющей факториал, прототип может иметь вид:
int fact(int); или fact(int); Возможен и вариант int fact(int k);
Прототипы библиотечных функций находятся в специальных заголовочных файлах, поставляемых вместе с библиотеками в составе систем программирования, и включаются в программу с помощью директивы препроцессора #include.
Вызов функции, в соответствии с синтаксисом языка С, может иметь одну из двух форм:
1. <имя функции> ([<список фактических параметров>])
2. <адресное выражение> ([<список фактических параметров>])
Использование второй формы требует знакомства с темой «указатели», поэтому пока остановимся на первой форме – наиболее естественной и понятной.
Место появления в программе выражения <имя функции> ([<список фактических параметров>]) – и есть точка вызова функции.
Особого внимания требует понятие «список фактических параметров». В отличие от слова «формальный» слово «фактический» означает нечто соответствующее фактам, реальное, конкретное. Поэтому, если за каждым формальным параметром закрепляется лишь определенный участок в оперативной памяти, то аргумент (значение соответствующего фактического параметра) – это конкретное значение, записанное в этом участке.
Таким образом, список фактических параметров – это список выражений, значения которых заменяют формальные параметры функции при ее вызове.
Правило 2.6. Соответствие между формальными и фактическими параметрами устанавливается по их расположению в списках.
В примере 2.3 приведена программа вычисления биномиального коэффициента для целых положительных чисел nи m с использованием функции вычисления факториала, определенной в примере 2.2. Для коэффициента используется выражение .
Пример 2.3.
# include <stdio.h>
int fact(int ); прототип необходим
void main()
{ int m,n;
printf("\n Enter n = "); scanf("%d",&n);
printf("\n Enter m < n, m = "); scanf("%d",&m);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.