Вариант 1
#include <iostream>
using std::endl;
using std::cout;
using std::cin;
//функция находит максимум из двух целых чисел
int max2(int a, int b) // заголовок функции
{ //тело функции
if (a > b)
return a;// return – оператор возврата значения в вызывающую программу
else
return b;
}
int main() // main – это тоже функция
{ //использование функции max для нахождения большего из a, b, c
int a, b, c, d;
cout << "Введите а, b, с:";
cin >> a >> b >> c;
d = max 2(a, b); //вызов функции max с параметрами a, b
// d = результат функции max – большее из a, b
d = max 2(d, c); //вызов функции max с параметрами d, c
// d = результат функции max – большее из d, c – большее из a, b, c
cout << "Максимальное число - " << d << endl;
system("pause");
return 0;
}
Вариант 2
#include <iostream>
using std::endl;
using std::cout;
using std:: cin;
int max 2(int, int); //прототип функции: имена параметров можно не указывать
Int main()
{ //использование функции max для нахождения большего из a,b,c
int a, b, c, d; //локальные переменные функции ma in
cout << "Введите а, b, с:";
cin >> a >> b >> c;
d = max 2(max 2(a, b), c); //вызов функции max как параметр функции
//порядок вызовов max как в варианте 1 примера 2_1
cout << "Максимальное число - " << d<<endl;
system("pause");
return 0;
}
//функция находит максимум из двух целых чисел
int max2(int a, int b) // заголовок функции
{ //тело функции
int d; //локальная переменная, доступна только в функции max
a>b? d=a: d=b;
Return d;
}
Глобальные данные и параметры
Обмен информацией между вызывающей программами и функциями может осуществляться с использованием глобальных данных (рисунок 2.2) или передачей параметров.
Рисунок 2.2 – Глобальные и локальные данные
Глобальные данные – это данные (константы, переменные, массивы и другие), объявленные в начале программы и доступные в функциях и «главной программе» (функции main).
Глобальные данные следует использовать только для передачи информации от одной функции к другой. Например, одна функция формирует значения данных, а другая функция использует эти значения.
Передача параметров. Когда вызывающая программа обращается к функции, требуется связать фактические параметры вызывающей программы с формальными параметрами функции. Чаще всего применяются два подхода: либо фактический параметр вычисляется и полученное значение передается формальному параметру (передача значением), либо формальному параметру становится доступен адрес значения фактического параметра (передача по адресу).
Передача значением. Схема обмена информацией с использованием передачи параметра значением приведена на рисунке 2.3. В этом случае формальный параметр обрабатывается в функции как локальная переменная, инициализируемая в начале выполнения функции значением соответствующего фактического параметра.
Рисунок 2.3 – Передача параметра значением
Значение фактического параметра при изменении соответствующего ему формального параметра не изменяется.
В примере на рисунке 2.3 после завершения работы функции f значение фактического параметра x остается равным 0, не смотря на оператор a ++ в теле функции f.
В операторе вызова фактическим параметром (при передаче параметра значением) может быть константа, переменная, выражение или функция.
Параметры по умолчанию
Значения параметров, передаваемых в функцию как аргументы (исходные данные), можно задать по умолчанию в заголовке функции.