КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Передача параметров по ссылке.
Итак, мы рассмотрели средства обмена информацией между двумя объектами-функциями такие, в которых вызывающая функция через параметры, передаваемые по значению, может передать в вызываемую функцию одно или много значений, а вот получить от этой функции в качестве результата ее работы может только одно значение: через возвращаемое значение. А если результатов работы вызываемой функции больше чем одно? В этом случае можно воспользоваться параметрами, передаваемыми по ссылке. Параметры по ссылке указываются в списке формальных параметров как и параметры, передаваемые по значению, через запятую, и их может быть указано столько, сколько надо вернуть результатов - много. Что же это за параметры? Для этого изучим новый производный тип – ссылка на тип
Имя типа «ссылка на тип» составляется из имени_типа и символа '&',например: int& float& char& Говорят «ссылка на int», «ссылка на float», «ссылка на char». Этот тип определяет не новый объект, а новое альтернативное имя уже существующего объекта. Этот тип не создает новый объект, а уже созданному объекту дает второе имя. Сначала всегда определяется объект нужного типа и только после этого можно создать ссылку на этот же тип (ссылка не может изменить тип именуемого объекта) и инициализировать его именем объекта, которому ссылка задает второе имя. Ссылка всегда должна быть инициализирована! Создадим следующие объекты инструкциями их определения: int a = 3, b = 4; float f; char s1,s2; Объектам a, f, и s2 определены (даны) новые имена в следующих инструкциях: int& aNew = a; float& F = f; char& ss2 = s2; Теперь к этим объектам можно обратиться по любому из двух имен. Обращения будут равносильны. aNew = b; f = 1.77; F = f - 1; ss2 = ‘w‘; s1 = s2;
Так использовать ссылки – экзотика. Да и зачем? Свойства и возможности ссылок на тип чаще всего используют в списке формальных параметров функции для организации обмена данными.
Рассмотрим задачу – пример 2, сделав другую реализацию уже рассмотренной задачи.
Составить функцию countX, которая, получив а, b и с через параметры по значению, вычисляет х и возвращает результат его вычисления через параметр по ссылке (откажемся от уже рассмотренной возможности возвращать результат через возвращаемое значение).
В функции main ввести значения a, , . Используя функцию countX, вычислить значение X и выдать на экран.
В функции main не использовать стандартные математические функции.
Для того, чтобы вычислить требуемый результат, функция countX должна получить с по значению три параметра а, b и с, тип каждого значения float. В этой реализации функция результат вернет не через возвращаемое значение, тип которого теперь void. В списке ее формальных параметров появляется параметр x, тип которого float&. Имя х в списке формальных параметров определит второе имя того объекта, который получит функция при своем вызове, и которым он будет именоваться в этой функции. float а
float b void
float c float& x Заголовок функции countX, реализуемой в таком виде, должен быть таким: float countX (float a, float b, float c, float& x )
|