Глава 11. Функции________________________________________247

риант (см. далее в этой главе "Имена функций"). Синтаксис каждого аргумента таков:

type variable name

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

void TakesThree( int a, int b, int с) ;

Примеры, приведенные в этой. главе, безусловно, представляют нечто лишь условно приближенное к реальной жизни; тем не менее общий синтаксис в них дан вполне исчерпывающе. То, что вы видели выше — примеры операторов Foo и TakesThree — было объявлениями функций. Обратите внимание на завершающую точку с запятой. Разница между объявлениями функций и их определениями состоит в наличии тела функции. Вот определения тех же двух функций:

«

void Foo() {

// какой-то код } void TakesThree( int a, int b, int с) ;

{

// еще какой-то код

Определение не требует завершающей точки с запятой и использует фигурные скобки (} вокруг тела функции (в приведенном примере тело функции состоит из одних комментариев).

Объявление функций до первого использования

C++ требует объявлять функцию перед ее первым использованием в программе, чем отличается от С, где это необязательно. Это требование может быть удовлетворено несколькими способами. Во-первых, можно просто вынести объявление функции в начало модуля. Объявляя функцию, необходимо указывать тип возвращаемого значения, имя функции и типы аргументов; имена аргументов описывать необязательно. Итак, функцию TakesThree можно объявить следующим образом: ,

void TakesThree( int, int, int);

Тем не менее имена переменных все же лучше указывать, поскольку таким образом можно пояснить назначение данной функции. Второй способ, которым функция может быть объявлена и включена в любой модуль, состоит