Возвращение значения функцией
Создадим функцию определяющую максимальное из двух чисел. На входе в эту функцию будут передаваться два числа, а на выходе возвращаться одно, то которое больше. Для возврата используется ключевое слово 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-функции не должны содержать сложные программные конструкции.
Значение формальных параметров функции по умолчанию
Формальный параметр может иметь значение по умолчанию. Все параметры, стоящие справа от него тоже должны иметь значения по умолчанию. Эти значения передаются в функцию, если при вызове данные параметры не указаны.
#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();
}
Перегрузка функций
Имена функций могут быть перегружены в пределах одной области видимости. Компилятор отличает одну функцию от другой по сигнатуре. Сигнатура задается числом, порядком следования и типами ее параметров.
#include <stdio.h>
#include <string.h>
int Name (int first) {
return first*first;
}
int Name (unsigned first) {
return first*first;
}
char Name (char first) {
return first*first;
}
int Name (int first,char *second) {
return first*strlen(second);
}
float Name (float r) {
return r*r;
}
double Name (double r) {
return r*r;
}
void main(void) {
printf("%d\n", noName(4));
printf("%d\n", noName((unsigned)4));
printf("%c\n", noName('c'));
printf("%d\n", noName(4,"cлово"));
printf("%0.2f\n", noName((float)1.2));
printf("%0.2lf\n", noName((double)1.2));
}
Дата добавления: 2018-11-25; просмотров: 374;