Uploaded by Михаил Кузнецов

Theory ref1

advertisement
Передача параметров в функцию
Способы передачи параметров в функцию
по значению
(пример1)
по ссылке
(пример2)
На предыдущих занятиях мы передавали параметры в функцию по значению
(хотя и не употребляли этот термин). Теперь познакомимся со вторым способом 
когда параметры передаются в функцию по ссылке. Сравним эти два приема.
Пример 1.
Пример 2.
В примере 2 мы видим значок & (амперса́нд). Здесь он используется при
объявлении параметра x и означает, что этот параметр передан в функцию по
ссылке.
Отличия.
При передаче параметра по значению (пример 1) в момент вызова функции
создается копия передаваемого параметра: формальный параметр x становится копией фактического параметра b функции f (рисунок 1). Поэтому, если переменная x изменяется, то это никак не сказывается на переменной b, она свое значение
не изменит.
Рисунок 1.
b
5
b  фактический параметр функции f
x
x  формальный параметр функции f
(копия фактического параметра)
5
При передаче параметра по ссылке (пример 2) формальный параметр x становится синонимом фактического параметра b, т.е. b и x  это одна и та же переменная (рисунок 2). Поэтому, при изменении переменной x, будет изменяться и
переменная b.
Рисунок 2.
b
x
b  фактический параметр функции f
5
x  формальный параметр функции f
Использование параметров, передаваемых по ссылке:
 если функция возвращает более одного результата
 для быстрой передачи параметров (будет рассмотрено позднее)
Бывают ситуации, когда необходимо, чтобы функция возвращала два и
более значений. Согласно правилам языка С++, из функции можно возвратить только одно значение (с помощью оператора return) или вообще не возвращать никакого значения (тогда в заголовке функции указывается слово
void).
Пример 3.
Предположим, что функция должна возвратить два значения. Тогда такая функция может быть оформлена следующим образом:
Здесь параметр а передан в функцию по значению, параметры res1 и res2 
по ссылке.
Параметр а  это входной параметр, который передается в функцию, а параметры res1 и res2 служат для того, чтобы в них хранились результаты вычислений (выходные параметры).
Download