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

Списъкът с параметри, предадени на функциите, както беше показано по-рано, се състои от имена на параметри и указания за техните типове. Например в заглавието

двойно FSum (двойно x1, двойно x2, int A)

са посочени три параметъра x1, x2, A и са дефинирани техните типове. Извикване на такава функция може да изглежда така:

двойно F = FSum (Y, x2, 5);

Това е само един от начините за предаване на параметри на функция, наречена преминавайки по стойност. Работи така. В момента на извикване на функцията в паметта се създават временни променливи с имената x1, x2, A и в тях се копират стойностите на аргументите Y, x2 и константи 5. При това връзката между аргументите и променливите x1, x2, A са счупени. Можете да промените стойностите на x1, x2, A във функцията, но това няма да повлияе по никакъв начин на стойностите на аргументите.

Възможен е и друг начин за предаване на параметри - обадете се чрез справка. В този случай операторът на повикване дава на извиканата функция възможност за директен достъп до предадените данни, както и възможност за промяна на тези данни. За да се посочи, че параметърът на функцията се предава чрез препратка, след типа на параметъра в прототипа на функцията се поставя амперсанд (&); същата нотация се използва в списъка с типове параметри в заглавката на функцията. Например:

void square (int &); // прототип на функцията за изчисляване на квадрата

void square (int & a) // заглавка на функцията

Такава функция може да бъде извикана по обичайния начин, като й се предаде името на аргумента. Например:

В резултат на такова повикване променливата x1 ще получи стойността 4.

Ако параметърът на функцията е масив, тогава не е необходимо да се посочва знакът за връзка, параметърът се предава автоматично чрез препратка. Също така не трябва да посочвате размера му в квадратни скоби за формален параметър на масива (поставят се празни скоби). Размерът може да бъде предаден като отделен параметър.

Матричните функции се предават като параметри чрез указатели и ще бъдат разгледани през следващия семестър.

Параметри със стойности по подразбиране

Обикновено, когато се извика функция, към нея се предава конкретна стойност за всеки параметър. Въпреки това, когато разработвате програма, можете да посочите, че параметърът е по подразбиране и да присвоите стойност по подразбиране на този параметър. Това се прави чрез задаване на символа "=" в заглавката на функцията след името на параметъра, след което се записва стойността по подразбиране. Например, нека опишем функцията за изчисляване на площта на триъгълник от три страни (формулата на Херон):

двойна площ (двойно a = 1.0, двойно b = 1.0, двойно c = 1.0)

Тук и трите странични параметъра получават стойности по подразбиране 1.

Ако параметърът по подразбиране не е посочен при извикване на функцията, тогава стойността му по подразбиране автоматично се предава на функцията. Например, ако извикате дадената функция с оператора

тогава S стойността ще бъде равна на площта със стойностите по подразбиране за всички страни.

Аргументите по подразбиране трябва да бъдат най-десните (последните) аргументи в списъка с параметри на функцията. Например извикване на същата функция с оператора

ви позволява да изчислите площта на триъгълник, ако дължината на едната страна е 1,5, а останалите дължини са взети по подразбиране.

Примерни програми

1. Програма за намиране и отпечатване на стойности на функциите в посочения диапазон: Dx = 0,2.