{
int i;
float P;
P=1;
for(i=1; i<= n; i++)
P = P*x;
return P;
}
Согласование параметров
Формальные и фактические параметры должны быть согласованы друг с другом по количеству, типу и порядку следования. Это означает, что количество формальных параметров должно быть равно количеству фактических параметров, и каждый формальный параметр должен иметь тот же тип и занимать в списке то же место, что и соответствующий ему фактический параметр.
Механизм замены параметров
В языке С++ существует два механизма передачи параметров в функции: по значению и по адресу.
Как правило, параметры функции (кроме массивов и указателей) передаются по значению. Параметры, передаваемые по значению, играют роль входных параметров. Фактическим параметром, передаваемым по значению, может быть константа, переменная или выражение. Для них при вызове функции в памяти компьютера временно выделяются ячейки, в которые передаются копии значений фактических параметров. При выполнении функции значения в этих ячейках могут измениться, однако соответствующие им фактические параметры останутся без изменения.
|
|
Результат работы функции возвращается в точку вызова с помощью оператора return. Таким образом, функция может вернуть только одно скалярное значение. Если функция должна вернуть несколько результатов, то этот возврат реализуется с помощью указателей, т.е. параметров, передаваемых по адресу.
При передаче параметров по адресу все действия в процедуре выполняются непосредственно над фактическим параметром, а не его копией. Поэтому любое изменение формального параметра приводит к изменению соответствующего ему фактического параметра.
Рассмотрим два примера, иллюстрирующих механизмы передачи параметров
Пример 1 Пример 2
#include "stdafx.h" #include "stdafx.h"
void Z (int у) void Z (int *у)
{ {
y=l; *y=1;
} }
void main() void main()
{ int х; { int х;
x=0; х=0;
Z(x); Z(&x);
printf("x=%d", x); printf("x=%d", x);
} }
В примере 1 процедура Z содержит формальный параметр у, который передается по значению, поэтому его изменение в процедуре (у=1;) не влияет на значение фактического параметра х. После выполнения программы на экран будет выведено: х=0.
В примере 2 формальный параметр у – это указатель. Это означает, что в функции изменяется значение в той ячейки памяти, адрес которой передавался в функцию Z, т.е. по адресу фактического параметра X. На экран будет выведено: х = 1.