Информатика и технология программирования

Способ передачи параметров


В Си принят единый способ передачи параметров, который называется ПЕРЕДАЧЕЙ ПО ЗНАЧЕНИЮ. Выглядит он так:



-формальные параметры являются собственными переменными функции;



-при вызове функции происходит присваивание значений фактических параметров формальным (копирование первых во вторые);



-при изменении формальных параметров значения соответствующих им фактических параметров не меняются.

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

.


int f(int n1,int n2) // Эквивалент


int n1,n2 ,rez_f;
void f()
{ {
int i,j; int i,j;
... ...
n1 ++; n1 ++;
n2 = n1; n2 = n1;
return n2; rez_f = n2;
... ...
} }
int m=2; int m=2;
void main() void main()
{ {
int z; int z;
z = f( m,3); n1 = m; n2 = 3; f(); z = rez_f;
} }

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


int sum(int s[], int n) // Сумма элементов массива


int z; // Размерность передается


{ int i; // отдельным параметром


for (i=0,z=0; i&#60n; i++) z += s[i];
return(z); }
int c[10] = {1,6,4,7,3,56,43,7,55,33};
void main()
{ int nn; nn = sum(c,10); }

В этом случае формальный параметр как бы " отображается" на соответствующий фактический и такой способ передачи параметров носит название передача параметра по ссылке. В Си++ имеется специальный синтаксис для передачи по ссылке любых формальных параметров.



Содержание раздела