Передача параметров в функцию
Параметры позволяют передать информацию из вызывающей программы в функцию. В теле функции параметрами можно пользоваться так же, как и локальными переменными.При вызове функции:
· для каждого формального параметрасоздаётся локальная переменная;
· начальными значениями созданных переменных являются фактические параметры, определяемые при вызове функции.
Пример 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)