Void main() {
int a, b, c, d;
cout << "input a,b,c:";
cin >> a >> b >> c;
d = MAX(MAX(a, b), c);
cout << "\nmax(a,b,c)=" << d;
}// конец функции main
Вспомогательная функция MAX определяет максимальное значение из двух аргументов: int x, int y. Для возвращения результата типа int используется оператор return x; или return y;. Обращение к функции MAX оформляется в основной функции main оператором присваивания d=MAX(MAX(a, b), c);, в правой части которого указывается имя функции MAX с двумя целочисленными аргументами: первый ‒ вызов функции MAX(a, b) (с возвращаемым результатом типа int), второй ‒ c.
В С++ для функций предусмотрен инструмент прототип, который сообщает компилятору, как выглядит интерфейс функции, т.е. имя, тип возвращаемого значения, типы и порядок следования аргументов, которые ожидает функция. В связи с этим код программы для примера 12 изменится следующим образом (пример 13).
Пример 13.
#include "stdafx.h"
#include <iostream>
using namespace std;
// прототип вспомогательной функции MAX
int MAX(int, int);
// основная функция main
Void main() {
int a, b, c, d;
cout << "input a,b,c:";
cin >> a >> b >> c;
d = MAX(MAX(a, b), c);
cout << "\nmax(a,b,c)=" << d;
}// конец функции main
// описание функции MAX
int MAX(int x, int y) {
if (x > y) return x;
else return y;
}// конец описания функции MAX
Прототип вспомогательной функции int MAX(int, int); объявляется до основной функции, при этом для формальных параметров указывается только их тип. Описание обязательно заканчивается точкой с запятой. Текст функции MAX следует после главной main.
5.2. Передача аргументов в функцию
В примерах 12 и 13 аргументы a, b, c функции MAX после её исполнения не получали новых значений. В этом случае можно говорить о передаче переменных в функцию по значению. Когда по смыслу алгоритма требуется изменять значения переменных-аргументов, применяется способ передачи аргументов по ссылке. Рассмотрим функцию swop обмена значениями между переменными (примеры 14 и 15).
Пример 14.
#include "stdafx.h"
#include <iostream>
using namespace std;
// описание вспомогательной функции swop
void swop(int &x, int &y) {
int t = x;
x = y;
y = t;
}// конец описания функции swop
// основная функция main
int main() {
int i = 5, j = -77;
cout << "\n before: i=" << i << " j=" << j;
swop(i, j);
cout << "\n after: i=" << i << " j=" << j;
return 0;
}// конец функции main
Результат исполнения программы следующий:
before: i=5 j= -77
after: i= -77 j=5
На передачу по ссылке указывает знак & (амперсанд). Переменные i и j, изменённые в процессе выполнения функции swop, сохраняют эти новые значения для дальнейшего использования в программе.
Пример 15.
#include "stdafx.h"
#include <iostream>
using namespace std;
// описание вспомогательной функции swop
void swop(int &x, int &y) {
int t = x;
x = y;
y = t;
}// конец описания функции swop
// основная функция main