Параметры позволяют передать информацию из вызывающей программы в функцию. В теле функции параметрами можно пользоваться так же, как и локальными переменными. При вызове функции:
· для каждого формального параметрасоздаётся локальная переменная;
· начальными значениями созданных переменных являются фактические параметры, определяемые при вызове функции.
Пример 5:
int sum(int a, int b)
{ return a+b;
}
void main()
{ int x =5,y=10,z;
z = sum(x,y);
}
При вызове функции создаются две локальные a b переменные, которые инициализируются фактическими параметрами x y:
a=x
b=y
Передача параметров по значению
Во всех предыдущих примерах вызываемой функции передавались не сами переменные, а лишь их значения. При таком вызове функция не может изменить саму переменную в вызывающей программе, она может изменить лишь её временную копию (параметр), значение которой теряется при выходе из функции.
Пример 6: функция power() возводит base в n-ю степень.
#define dec 25
int power (int base, int n)
{ int p;
for (p = 1; n > 0; --n)
p = p * base;
return p;
|
|
}
void main()
{ i, p=0;
for(i=0; i<5; i++)
p=p+power(dec, i);
….
}
При вызове функции: base=dec, n=i
Обратите внимание, что бы мы ни делали с n внутри функции power(), это не окажет никакого влияния на переменную i в вызывающей программе.
Передача массива в функцию
Для того, чтобы организовать обработку массива при помощи функции, необходимо сообщить ей информацию об имени и размере массива, это можно сделать по-разному, например:
· Передать массив определенного размера, определение функции:
int func (char s[100])
{... }
Такое определение функции ограничивает её применение, обрабатываться будут только массивы размером 100.
Вызов функции:
int A[100];
func (A)
· Передать массив неопределенного размера, определение функции:
int func (char s[], int n)
{... }
Такое определение функции более предпочтительно, так как позволяет обрабатывать массивы произвольного размера. При этом первый параметр – имя массива, второй – его размер.
Вызов функции:
// Пример обработки массива в 100 элементов.
int A[100];
func (A, 100)