Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Параметры ссылочного типа



Для возврата полученных результатов простого типа из функций ссылочный тип используется следующим образом:

· в заголовке функции параметры-результаты (в нашем примере y, z) записываем как переменные ссылочного типа, то есть с символом &;

· в тексте функции никакие дополнительные операции, а значит, и символы, для этих переменных не используем, то есть работаем, как с обычными переменными;

· при вызове функции в качестве фактических параметров, указываем простые переменные соответствующего типа (cs, sn), объявленные обычным образом;

· входные параметры-значения используются по тем же правилам (см. § 1 );

· вызов функции типа void с несколькими результатами осуществляется как вызов функции типа void без результата, то есть отдельно, а не в выражении (см. § 1 ).

Почему полученное значение возвращается в вызывающую функцию? Мы уже знаем, что с помощью ссылочного типа определяется другое имя ячейки. Поэтому для формального (y) и фактического (cs) параметров отводится одна и та же ячейка, которая в функции SINCOS называется y, а при вызове в головной функции — cs. Поэтому если в функции получим y, то этим самым определим и значение cs, то есть полученное в функции значение возвращается в вызывающую функцию просто с другим именем. При этом никакого копирования не выполняется. Аналогично для переменных z и sn также резервируется одна и таже ячейка оперативной памяти.

Аналогично ссылочный тип используется и в случае, если значение переданной в функцию переменной надо не просто получить, как в рассмотренном выше примере, а передать в функцию, изменить и это изменённое значение надо возвратить в точку вызова. В таком случае одна и та же переменная является и входным, и выходным параметром. Например, составим функцию для перестановки значений двух переменных:

void CHANGE (float &u, float &v)

{ float 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, полученные в результате их перестановки. Заметим, однако, что если бы заголовок функции записать без ссылочного типа void CHANGE (float u, float v); то программа будет не только компилироваться, но и выполняться. Но при этом в функции u и v будут переставлены, но это изменение не передаётся в вызывающую функцию для a и b, то есть эти переменные не изменятся.





Дата публикования: 2015-02-18; Прочитано: 243 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...