Функции
Функцией в С++ называется часть программы, оформленная особым образом, которая выполняет логически законченные действия (вычисления).
Каждая программа С++ имеет по крайней мере одну функцию main(), которая при запуске программы вызывается автоматически. Функция main() может вызывать другие функции, те, в свою очередь, могут вызывать следующие и т.д.
Чаще всего функции используются в следующих случаях:
- для упрощения решения сложных задач
- при использовании одинаковых алгоритмов с различными объектами.
Каждая функция обладает собственным именем, и, когда оно встречается в программе, управление переходит к телу данной функции. Этот процесс называется вызовом функции (или обращением к функции). По возвращении из функции выполнение программы возобновляется со строки, следующей после вызова функции.
Различают два вида функций: определяемые пользователем (нестандартные) и встроенные. Встроенные функции являются составной частью пакета компилятора. Нестандартные функции создаются самим программистом.
Функция может принимать параметры и возвращать значение.
Любая функция должна быть объявлена и определена. Объявление функции должно находиться в тексте раньше ее вызова.
Описание функции состоит из заголовка и тела функции:
тип имя_функции (список_переменных)
{тело функции;}
Заголовок функции содержит:
- тип возвращаемого функцией значения. Он может быть любым, кроме массива и функции (но может быть указателем на массив или функцию). Если функция не должна возвращать значение, указывается тип void. Если тип не указан, то считается, что функция возвращает результат типа int;
- имя функции, с которым она будет вызываться;
- список переменных — перечень передаваемых в функцию аргументов, которые отдельно друг от друга запятыми; для каждой переменной из списка указывается тип и имя.
Тело функции представляет собой последовательность описаний и операторов, заключенных в фигурные скобки.
В общем виде структура программы на C++ может иметь вид:
директивы компилятора
тип имя_1 (список_переменных)
{тело_функции_1;}
тип имя_2 (список_переменных)
{ тело_функции_2;}
…
int main (список_переменных)
{
// тело функции может содержать операторы вызова функций имя_1, имя_2….
тело_основной_функции;}
Стоит отметить, что тексты функции могут следовать после главной функции main(). Однако заголовки необходимо перечислить до нее.
Вызвать функцию можно в любом месте программы. Для этого необходимо указать ее имя и в круглых скобках через запятую перечислить имена или значения аргументов, если такие имеются:
имя_функции (список_переменных);
Взаимодействие между вызывающей и вызываемой функциями осуществляется через параметры. Различают формальные и фактические параметры. Имена формальных параметров задаются в заголовке функции. Они используются внутри функции для указания того, какие действия или вычисления необходимо выполнять над данными. Имена фактических параметров задаются при вызове функции. Каждый формальный параметр заменяется копией фактического параметра и все действия внутри функции осуществляются с копией соответствующего фактического параметра.
Между формальными и фактическими параметрами должны выполняться следующие соответствия:
- формальных и фактических параметров должно быть одинаковое число;
- порядок следования формальных и фактических параметров должен совпадать;
- тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра.
Переменные описанные внутри функции, а также переменные из списка аргументов, являются локальными. Например, если программа содержит пять разных функций, в каждой из которых описана переменная N, то для C++ это пять различных переменных. Область действия локальной переменной не выходит за рамки функции.
Переменные, определенные до объявления всех функций и доступные всем функциям, называют глобальными.