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