Передача данных по значению

Обращение к функциям в программе

Список параметров функций

Else

{

cout << "Деление на 0!\n";

return 0;

}

case '*': return Op1 * Op2;

default:

{

cout << "Неверная операция!\n";

return 0;

}

}

}

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

Параметры функций служат для обеспечения взаимодействия между функцией и вызвавшей ее программой. Другими словами, параметры служат для обмена данными между программой и функцией.

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

 

void Pause () //Илиvoid Pause ( void )

{

cout << “\n Для продолжения нажмите любую клавишу…\n ”;

_getch();

}

 

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

 

<Тип данных параметра> <Идентификатор – имя параметра>

 

Например:

 

void Example1 (int a, int b)

 

или

 

double Example2 (int A, double B)

Если функция не возвращает значение, она вызывается в программе, например, так:

 

int I = 10, J = 200;

……

Example1 (I, J);

…….

Если функция возвращает значение, она вызывается в программе обычно так:

 

double d;

……

d = Example2 ( 10, 3.14);

…….

Однако если даже функция возвращает значение, но необходимости в этом значении нет, то вызвать такую функцию можно и так:

double d;

……

Example2 ( 10, 3.14);// Возвращаемое значение не используется

…….

При вызове функции на места параметров подставляются некоторые конкретные значения, которые обычно называют аргументами функции. Иногда вместо понятия параметров и аргументов используют термины формальные и фактические параметры. Формальные параметры соответствуют понятию параметр функции, а фактический параметр – это аргумент функции. Например, в предыдущем примере A и Bявляются формальными параметрами (или просто параметрами) функции Example2, а значения 10 и 3.14– фактическими параметрами (или аргументами) функции.

Количество, типы данных и порядок следования аргументов должны соответствовать списку параметров функции.

Функции, возвращающие значения, могут использоваться в качестве элементов различных выражений.

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

 

void F (int I)

{

I = I + 20;

cout << I << endl;

}

int main()

{

int A = 10;

cout << A << endl;// Выведено значение 10

F ( A );// Выведено значение 30

cout << A << endl;// Выведено значение 10

return 0;

}

В этом примере значение переменной А до вызова функции F и после завершения работы этой функции одинаковы. При выполнении функции значение параметра I изменяется, но это изменение не затрагивает значение переменной A, так как функция работает не с самой переменной A, а с ее копией, которая представляется параметром I.

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