Передача параметров в функцию

Параметры позволяют передать информацию из вызывающей программы в функцию. В теле функции параметрами можно пользоваться так же, как и локальными переменными.При вызове функции:

· для каждого формального параметрасоздаётся локальная переменная;

· начальными значениями созданных переменных являются фактические параметры, определяемые при вызове функции.

Пример 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)