Функция обеспечивает удобный способ отдельно оформить некоторое вычисление и пользоваться им далее, не заботясь о том, как оно реализовано. После того, как функции написаны, можно забыть, как они сделаны, достаточно знать лишь, что они умеют делать.
int power(int m, int n);
int main(void)
{
int i;
for(i = 0; i < 10; ++i)
printf("%d %d %d\n", i, power(2, i), power(-3, i));
return 0;
}
int power(int base, int n)
{
int i, p;
p = 1;
for(i = 1; i <= n; ++i)
p = p * base;
return p;
}
1 2 -3
2 4 9
3 8 -27
4 16 81
5 32 -243
6 64 729
7 128 -2187
8 256 6561
9 512 -19683
Определение любой функции имеет следующий вид:
тип-результата имя-функции (список параметров, если он есть)
{
$ vim func1.c#include <stdio.h>
int power(int m, int n);
int main(void)
{
int i;
for(i = 0; i < 10; ++i)
printf("%d %d %d\n", i, power(2, i), power(-3, i));
return 0;
}
int power(int base, int n)
{
int i, p;
p = 1;
for(i = 1; i <= n; ++i)
p = p * base;
return p;
}
$ cc -g -O0 -Wall -o a.out func1.c
$ ./a.out0 1 1
1 2 -3
2 4 9
3 8 -27
4 16 81
5 32 -243
6 64 729
7 128 -2187
8 256 6561
9 512 -19683
Определение любой функции имеет следующий вид:
тип-результата имя-функции (список параметров, если он есть)
{
объявления
инструкции
}
}
Определения функций могут располагаться в любом порядке в одном или в нескольких исходных файлах, но любая функция должна быть целиком расположена в каком-то одном.
При каждом вызове функции power передаются два аргумента,
printf("%d %d %d\n", i, power(2, i), power(-3, i));
и каждый раз главная программа main в ответ получает целое число, которое затем приводится к должному формату и печатается.
В первой строке определения power:
int power(int base, int n)
указываются типы параметров, имя функции и тип результата. Имена параметров локальны внутри power, это значит, что они скрыты для любой другой функции, так что остальные подпрограммы могут свободно пользоваться теми же именами для своих целей. Последнее утверждение справедливо также для переменных i и р:
i в power и i в main не имеют между собой ничего общего.
Параметр — переменная из списка параметров, заключенных в круглые скобки и
заданных в определении функции; Аргумент — значение, используемое при обращении к функции.
Значение, вычисляемое функцией power, возвращается в main с помощью инструкции return. За инструкцией return может следовать любое выражение:
return выражение;
Объявление
int power(int m, int n);
стоящее непосредственно перед main, сообщает, что функция power ожидает двух аргументов типа int и возвращает результат типа int. Это объявление, называемое прототипом функции, должно быть согласовано с определением и всеми вызовами power. Если определение функции или вызов не соответствует своему прототипу, это ошибка.
Комментариев нет:
Отправить комментарий