Мова С++ має два способи передачі аргументів: передача аргументів за значенням і передача аргументів за посиланням(адресою).
Виклик функції з передачею значення
При цьому способі виклику функції значення аргументу копіюється у відповідний формальний параметр функції. Тому зміни значення цього параметра всередині функції не впливають на значення змінних, які використовувалися для виклику. В усіх розглянутих раніше прикладах використовувався сам цей спосіб передачі аргументів. Саме через те, що у стек записуються лише копії значень аргументів функції (стек-це спеціальна ділянка оперативної пам’яті через яку відбувається передача аргументів у функції), у ролі аргументів можуть виступати як змінні та константи, так і вирази, які повертають значення потрібного типу (тобто типу формального параметра.
Приклад.
/* приклад виклику функції з передачею значення */
#include<iostream>
#include<conio.h>
int square(int); // прототип функції
using namespace std;
void main()
{
int p=5;
cout<<"p="<<p<<" p*p="<<square(p)<<" p="<<p<<endl;
_getch();
}
int square (int x) // опис функції
{ x*=x; return x; }
У цьому прикладі значення аргументу для функції square() (тобто 5) скопіювалося у параметр x. Коли відбулося присвоєння x*=x, змінилося значення лише формального параметру x. Змінна p, яка використовувалася у ролі аргумента при виклику square(), і надалі має значення 5, тому на екран виведеться такий рядок: p=5 p*p=25 p=5.