В этом случае ссылочный тип используется следующим образом:
· в заголовке функции параметры-результаты (в нашем примере y, z) записываем как переменные ссылочного типа, то есть с символом &;
· в тексте функции никакие дополнительные символы для этих переменных не используем, то есть работаем, как с обычными переменными;
· при вызове функции в качестве фактических параметров, указываем простые переменные соответствующего типа (cs, sn), объявленные обычным образом;
· входные параметры как параметры-значения используются по тем же правилам (см. §1);
· вызов функции с несколькими результатами осуществляется как вызов любой функции типа void, то есть отдельно, а не в выражении (см.§1).
Почему полученное значение возвращается в вызывающую функцию? С помощью ссылочного типа определяется другое имя ячейки. Поэтому для формального (y) и фактического (cs) параметров отводится одна и та же ячейка, которая в функции называется y, а при вызове в головной функции — cs. Поэтому если в функции получим y, то этим самым определим и значение cs, то есть полученное в функции значение возвращается в вызывающую функцию. Аналогичная ситуация имеет место для переменных z и sn.
Аналогично ссылочный тип используется и в случае, если значение переданной в функцию переменной надо изменить и это изменённое значение надо возвратить в точку вызова, то есть если одна и та же переменная является и входным, и выходным параметром. Например, составим функцию для перестановки значений двух переменных:
void CHANGE (float &u, float &v)
{ float temp;
temp=u; u=v; v=temp;
}
Тогда вызвать её можно, например, следующим образом:
float a=1.1, b=2.2;
CHANGE( a, b);
Так как a и u — это два имена одной и той же ячейки, то изменение u с 1.1 на 2.2 автоматически приведёт к изменению переменной a. Аналогично изменится и переменная b,если изменили значение переменной v. И тогда оператор cout<<a<<” “<<b; выведет изменённые значения 2.2 и 1.1, полученные в результате их перестановки.