Теоретический материал

Необходимо обратить внимание на то, что программа на языке С++ состоит из раздела определений (описаний) и набора одной или нескольких функций.

Функция ¾ это логически завершенная совокупность описаний и операторов, предназначенных для выполнения определенной задачи.

В языке С++нет деления на основную программу и подпрограммы, на процедуры и функции и т.д. Однако среди функций должна быть одна с именем main , которая может находиться в любом месте программы. Эта функция выполняется всегда первой и заканчивается последней. Любая функция имеет одинаковую структуру, которая имеет вид :

 

[тип результата ] имя функции ([список формальных аргументов])

{

// тело функции

описания данных ;

операторы ;

[return] [выражение];

}

здесь квадратные скобки ( [ ] ),как обычно указывают, что заключенная в них конструкция может отсутствовать ;

тип результата¾ любой базовый или ранее описанный тип значения возвращаемого функцией (необязательный параметр), если он отсутствует, то тип результата будет целый (int); этот параметр может быть описан ключевым словом (void), в этом случае функция не возвращает никакого значения (результата). Если параметр задан со звездочкой (*) ¾ функция возвращает указатель на объект, либо на получения адреса объекта (& ) (в операторе return);

имя функции¾ любое имя, состоящее из букв, цифр и знака "_"(подчеркивание), начинающееся буквой или знаком "_", либо имя mainза именем функции всегда должна стоять пара круглых скобок ( ), в которых записываются формальные параметры, а если их нет, то ¾ пустые скобки. Cледует иметь ввиду, что фактически имя функции ¾ это особый вид указателя на функцию, его значением является адрес точки входа в функцию;

список формальных аргументов¾ определяет количество, тип и порядок следования передаваемых в функцию входных аргументов, которые друг от друга разделяются запятой . В случае, когда список отсутствует, это поле будет пустым ( ), либо содержать ключевое слово ( void) . Формальные параметры функции полностью локализованы в ней и недоступны для любых других функций .

Список формальных аргументов должен иметь следующий вид:

 

( [const] тип 1 [параметр 1] , [const] тип 2 [параметр 2],. . . )

В этом списке нельзя группировать параметры одного типа, указав их тип единожды, для каждого параметра надо указывать его тип. Слово const объявляет компилятору, что значение параметра не должно изменятся функцией ( это необязательный атрибут).

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

void fun ( int p)

{

++ p;

cout << " p=" << p << endl;

}

void main ( )

{

int x = 10;

fun (x);// вызовфункции

cout << "x=" << x << endl;

}

В результате работы этого фрагмента программы будет выведено: р=11, х = 10, поскольку для вызова функции fun(x) в нее передается копия значения равного 10, при выполнении этой функции внутри нее значение увеличивается на 1, т.е. (++р) и, поэтому выводится р = 11, но за пределами функции указанное значение не изменяется.

Если надо изменить переменную оригинал, т.е. передать изменение параметра за пределами тела функции, то можно передать значение параметра по ссылке или использовать параметр–указатель. Тогда, используя параметр- ссылку, получим :