double arrow

Значение формальных параметров функции по умолчанию

Inline-функции

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

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

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

#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-функции не должны содержать сложные программные конструкции.

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

#include <stdio.h>

void Name1 (float x, int y, char z='b') {

printf("x = %0.1f y = %d, z = %d \n", x,y, (int)z);

}

void Name2 (float x, int y=16, char z='a') {

printf("x = %0.1f y = %d, z = %d \n", x,y, (int)z);

}

void Name3 (float x=1.3, int y=4, char z='c') {

printf("x = %0.1f y = %d, z = %d \n", x,y, (int)z);

}

void main(void) {

Name1(1.0,2);

Name2(100.0);

Name3();

}






Сейчас читают про: