Функции, возвращающие два значения
По определению функция может вернуть только одно значение-результат. Если надо вер-нуть два и больше результатов, приходится использовать специальный прием — передачу параметров по ссылке.
Пример.Написать функцию, которая определяет максимальное и минимальное из двух целых чисел.В следующей программе используется достаточно хитрый прием: мы сделаем так, чтобы функция изменяла значение переменной, которая принадлежит основной программе. Один результат(минимальное из двух чисел) функция вернет как обычно, а второй – за счет изменения переменной, которая передана из основной программы.
Обычно при передаче параметра в процедуру или функцию в памяти создается копия переменной, и функция работает с этой копией. Это значит, что все изменения переменной-параметра,сделанные в функции, не отражаются на значении этой переменной в вызывающей программе.Если перед именем параметра в заголовке функции поставить знак &(вспомним, что он также используется для определения адреса переменной), то функция работает прямо с переменной из вызывающей программы, а не с ее копией. Поэтому в нашем примере функция изменит значение переменой maxиз основной программы и запишет туда максимальное из двух чисел.
Этот приём можно использовать и для процедур: хотя формально они не возвращают ни-
какого значения-результата, можно всё-таки передавать данные в вызывающую программу через изменяемые параметры.
• Если надо, чтобы функция вернула два и более результатов, поступают следующим образом:
o один результат передается как обычно с помощью оператора return
o остальные возвращаемые значения передаются через изменяемые параметры
• Обычные параметры не могут изменяться подпрограммой, потому что она работает с копиями параметров (например, если менять значения aи bв функции MinMax, соответствующиеим переменные Nи Mв основной программе не изменятся).
• Любая процедура и функция может возвращать значения через изменяемые параметры.
• Изменяемые параметры (или параметры, передаваемые по ссылке) объявляются в заголовке подпрограммы специальным образом: перед их именем ставится знак &— в данном случае он означает ссылку, то есть подпрограмма может менять значение параметра (в данном случае функция меняет значение переменной maxв основной программе).
• При вызове таких функций и процедур вместо каждого фактического изменяемого параметра надо подставлять только имя переменной (не число и не арифметическое выражение — вэтих случаях транслятор выдает предупреждение и формирует в памяти временную переменную).
Дата добавления: 2015-10-05; просмотров: 854;