Язык программирования Си (Ритчи, Керниган) - страница 24

, которая возводит целое m в целую положительную степень n. Так, power(2, 5) имеет значение 32. На самом деле для практического применения эта функция малопригодна, так как оперирует лишь малыми целыми степенями, однако она вполне может послужить иллюстрацией. (В стандартной библиотеке есть функция pow(x, y), вычисляющая x в степени y.)

Итак, мы имеем функцию power и главную функцию main, пользующуюся ее услугами, так что вся программа выглядит следующим образом:

>#include ‹stdio.h›


>int power(int m, int n);


>/* тест функции power */

>main()

>{

> int i;

> for (i = 0; i ‹ 10; ++i)

>  printf("%d %d %d\n", i, power(2,i), power(-3,i));

> return 0;

>}


>/* возводит base в n-ю степень, n ›= 0 */

>int power(int base, int n)

>{

> int i, p;


> p = 1;

> for (i = 1; i ‹= n; ++i)

>  p = p * base;

> return p;

>}

Определение любой функции имеет следующий вид:

>тип-результата имя-функции (список параметров, если он есть)

>{

> объявления

> инструкции

>}

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

В следующей строке из функции main к power обращаются дважды.

>printf("%d %d %d\n", i, power(2,i), power(-3,i));

При каждом вызове функции power передаются два аргумента, и каждый раз главная программа main в ответ получает целое число, которое затем приводится к должному формату и печатается. Внутри выражения power(2, i) представляет собой целое значение точно так же, как 2 или i. (Не все функции в качестве результата выдают целые значения; подробно об этом будет сказано в главе 4.)

В первой строке определения power:

>int power(int base, int n);

указываются типы параметров, имя функции и тип результата. Имена параметров локальны внутри power, это значит, что они скрыты для любой другой функции, так что остальные подпрограммы могут свободно пользоваться теми же именами для своих целей. Последнее утверждение справедливо также для переменных i и p: i в power и i в main не имеют между собой ничего общего.

Далее параметром мы будем называть переменную из списка параметров, заключенного в круглые скобки и заданного в определении функции, а