Функции, возвращающие два значения

По определению функция может вернуть только одно значение-результат. Если надо вер-нуть два и больше результатов, приходится использовать специальный прием — передачу параметров по ссылке.

Пример.Написать функцию, которая определяет максимальное и минимальное из двух целых чисел.В следующей программе используется достаточно хитрый прием: мы сделаем так, чтобы функция изменяла значение переменной, которая принадлежит основной программе. Один результат(минимальное из двух чисел) функция вернет как обычно, а второй – за счет изменения переменной, которая передана из основной программы.

 

Обычно при передаче параметра в процедуру или функцию в памяти создается копия переменной, и функция работает с этой копией. Это значит, что все изменения переменной-параметра,сделанные в функции, не отражаются на значении этой переменной в вызывающей программе.Если перед именем параметра в заголовке функции поставить знак &(вспомним, что он также используется для определения адреса переменной), то функция работает прямо с переменной из вызывающей программы, а не с ее копией. Поэтому в нашем примере функция изменит значение переменой maxиз основной программы и запишет туда максимальное из двух чисел.

Этот приём можно использовать и для процедур: хотя формально они не возвращают ни-

какого значения-результата, можно всё-таки передавать данные в вызывающую программу через изменяемые параметры.

• Если надо, чтобы функция вернула два и более результатов, поступают следующим образом:

o один результат передается как обычно с помощью оператора return

o остальные возвращаемые значения передаются через изменяемые параметры

• Обычные параметры не могут изменяться подпрограммой, потому что она работает с копиями параметров (например, если менять значения aи bв функции MinMax, соответствующиеим переменные Nи Mв основной программе не изменятся).

• Любая процедура и функция может возвращать значения через изменяемые параметры.

• Изменяемые параметры (или параметры, передаваемые по ссылке) объявляются в заголовке подпрограммы специальным образом: перед их именем ставится знак &— в данном случае он означает ссылку, то есть подпрограмма может менять значение параметра (в данном случае функция меняет значение переменной maxв основной программе).

• При вызове таких функций и процедур вместо каждого фактического изменяемого параметра надо подставлять только имя переменной (не число и не арифметическое выражение — вэтих случаях транслятор выдает предупреждение и формирует в памяти временную переменную).








Дата добавления: 2015-10-05; просмотров: 761;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.