Параметры функции

 

Вернёмся к рассмотренной задаче. Пусть функция starbar() печатает любой символ, указанный в вызывающей программе. Он передается в функцию как аргумент.

 

#inсlude <stdio.h>

void starbar (char); // объявление функции

void main (void) {

starbar ('_'); // вызов функции

printf ("ПГУ");

printf ("им.Т.Г.Шевченко");

printf ("25 октября, 200");

starbar('#'); // вызов функции

}

void starbar (char x) { // определение функции

int count;

for (count=1; count<=65; count++)

putchar (x);

putchar ('\n');

}

 

Определение функции начинается с заголовка void starbar (char x) {

Переменная x - является формальным параметром. Это новая переменная и под нее должна быть выделена отдельная ячейка памяти. При вызове функции мы присваиваем формальному аргументу значение фактического аргумента.

starbar (‘-‘); x = '-';

Фактический аргумент может быть константой, переменной или сложным выражением.

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

printnum (int i, int j) {

printf ("Первый аргумент %d, вторй аргумент %d\n", i, j);

}

 

Возвращение значения функцией

 

Создадим функцию определяющую максимальное из двух чисел. На входе в эту функцию будут передаваться два числа, а на выходе возвращаться одно, то которое больше. Для возврата используется ключевое слово return.

 

void main (void){

int a=5, b=10, c=15, d=-10;

int e,f;

e=max(a, b);

f=max(c, d);

}

int max (int i, int j) {

int y;

y=i>j ? i:j;

return(y);

}

Оператор return прекращает работу функции и передает управление следующему оператору в вызывающей функции, даже если он не является последним оператором в функции. Количество операторов return не ограничено. Возвращаемое значение присваивается переменной по выходу из функции.

 

Inline-функции

 

Перед определением функции может быть использован спецификатор inline для того, чтобы компилятор помещал код функции непосредственно в место вызова функции.

 

#include <stdio.h>

#include <conio.h>

#include <dos.h>

 

inline float Circle(float r) {

return 2*3.14*r;

};

void main(void)

{

float y;

y = Circle(2);

printf(“%.2f\n”,y);

}

 

Это увеличивает код программы, но ведет к увеличению быстродействия работы программы. Inline-функции не должны содержать сложные программные конструкции.