Тело функции

Формальные и фактические аргументы, вызов функции

Название функции

Тип возвращаемого функцией значения

Тип возвращаемого значения может быть любым; в нашем примере – это float:

 

float average(float x, float y, float z) {

}

 

Указание возвращаемого типа сообщает программисту, как нужно вызывать функцию:

 

cout << average(12.5,56.7,66.8);

 

Можно также использовать запись

 

float avg = average(12.5,56.7,66.8);

 

Здесь переменная avg имеет тип float.

 

Название функции – это идентификатор, поэтому оно должно подчиняться определенным правилам: состоять из букв, цифр или знака подчеркивания и начинаться с буквы или со знака подчеркивания. Название функции может быть любым в рамках данных правил, но оно должно точно указывать на ту задачу, которую решает функция. Например, если функция предназначена для сортировки массива, то подходящим названием может быть sort_array или sort, а имена типа fg, f1 или mas никак не связаны данной задачей, поэтому их использование нежелательно.

Название функции указывается при ее определении:

 

float average(float x, float y, float z) {

}

и при вызове:

 

cout << average(12.5, 56.7, 66.8);

После указания имени функции в круглых скобках перечисляются формальные аргументы этой функции:

 

float average(float x, float y, float z) {

}

 

Формальные аргументы указывают на то, значения каких типов можно передать в функцию при вызове:

 

cout << average(12.5, 56.7, 66.8);

 

Аргументы функции, указываемые при вызове, называются фактическими; их количество, порядок и тип должны быть такими же, как и у формальных аргументов; если данное требование не выполняется, то компилятор выдаст ошибку. Например, следующие строки кода приведут к ошибкам:

 

cout << average(12.5);

cout << average("1.5", 6.7, 6.8);

cout << average();

 

После указания формальных аргументов в фигурных скобках находится тело функции; здесь идут все операторы, которые должна выполнить функция:

 

float average(float x, float y, float z) {

float summa = x+y+z;

return summa/3;

}

Оператор return и возвращение значения функции

Для остановки работы функции и возвращения ее значения предназначен оператор return. В зависимости от функции оператор return может присутствовать один или несколько раз, а может и вовсе отсутствовать. Стандартный способ использования оператора return – это указание его в конце функции с целью возвращения ее значения; именно так сделано в нашей функции getAverage:

 

float average(float x, float y, float z) {

float summa = x+y+z;

return summa/3;

}

 

Два раза оператор return используется в следующей функции, которая определяет максимум из двух чисел:

 

int max(int m, int n) {

if (m>n) {

return m;

} else {

return n;

}

}

 

Если функция не возвращает никакого значения, другими словами, при ее определении возвращаемым типом указан void, то оператор return может отсутствовать. Примером такой функции является функция вывода массива чисел на экран:

 

void printNumbers(int numbers[], int size) {

for (int i=0; i<size; i++) {

cout << numbers[i];

}

}

 

Если же при определении функция тип возвращаемого значения указан отличным от void, то хотя бы один оператор return должен присутствовать; более, все ветки логических конструкций должны содержать оператор return. Например, функция

 

int max(int m, int n) {

if (m>n) {

return m;

} else {

cout << n;

}

}

 

определена неправильно, поскольку ветка else не возвращает никакого значения, в то время как функция должна возвращать значение типа int.