Вызываемая функция не может непосредственно изменить переменную вызывающей функции: она может изменить только ее частную, временную копию.
Параметр n выступает здесь в роли временной переменной, в которой циклом for в убывающем порядке ведется счет числа шагов до тех пор, пока ее значение не станет нулем. При этом отпадает надобность в дополнительной переменной i для счетчика цикла. Что бы мы ни делали с n внутри power, это не окажет никакого влияния на сам аргумент, копия которого была передана функции power при ее вызове.
Параметры можно рассматривать как должным образом инициализированные локальные переменные вызванной подпрограммы.
#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;
}
/* power: возводит base в n-ю степень: n >= 0; версия 2 */
int power(int base, int n)
{
int p;
for(p = 1; n > 0; --n)
p = p * base;
return p;
}
Комментариев нет:
Отправить комментарий