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

Параметрите могат да бъдат предадени на функция по един от следните начини:

int GetMax(int, int);

приема два целочислени аргумента по стойност.

В C++ предаването по референция може да се извърши по два начина:

• директно използване на връзки;

• използване на указатели.

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

Пример за прототип на функция при предаване на параметри през указател е показан по-долу:

void SetNumber(int*, long*);

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

В този случай опитът за връщане на препратка към локалната променлива x ще доведе до грешка, която, за съжаление, ще стане ясна само по време на изпълнение на програмата.

Ако се изисква да се предаде доста голям обект на функцията, но не е осигурена неговата модификация, на практика се използва предаване на постоянен указател. Този тип извикване включва използването на ключовата дума const, например функцията

const int* FName(int* const Number)

приема и връща указател към const обект от тип int. Всеки опит за промяна на такъв обект в тялото на извиканата функция ще доведе до съобщение за грешка на компилатора. Нека да разгледаме пример, илюстриращ използването на константни указатели.

int* const call(int* const);

int X = 13; int*pX = &X; повикване (px);

int* const call(int* const x)

//*x++; II не можете да променяте обекта! връщане x;

Вместо синтаксиса на постоянен указател по-горе, можете алтернативно да използвате постоянни препратки, когато предавате параметри, като така:

const int& FName (const int& Number)

имащи същото значение като константните указатели.