Float ST(float x, int n)

{

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: