Функции C++ — передача по ссылке
Существует несколько способов отправки данных (или переменных) в качестве аргумента функции. Двумя наиболее распространенными являются передача по значению и передача по ссылке. Передача по ссылке позволяет функции изменять переменную без создания копии. Мы должны объявить ссылочные переменные. Расположение в памяти переданной переменной и параметра совпадает. Следовательно, любое изменение параметра также отражается в переменной внутри его родительской функции. В этой статье основное внимание уделяется обсуждению передачи переменных по ссылке в C++.
Что такое пропуск по ссылке?
Когда переменная передается как ссылка на функцию, адрес переменной сохраняется в переменной-указателе внутри функции. Следовательно, переменная внутри функции является псевдонимом переданной переменной. Следовательно, любые операции, выполняемые над переменной внутри функции, также будут отражены в вызывающей функции.
- Эта способность отражать изменения может возвращать более одного значения функцией.
- Кроме того, функция void может технически возвращать значения, используя этот метод.
Оператор & (адрес) обозначает значения, передаваемые по ссылке в функции. Ниже приведена программа C++ для реализации передачи по ссылке:
Объяснение:
- Во-первых, функция определяется с возвращаемым типом данных void и принимает значение по ссылке (что обозначается знаком адреса & в формальных параметрах).
- Функция уменьшает значение своего формального параметра на 1.
- После чего внутри функции main целочисленная переменная с именем a инициализируется значением 5.
- Значение «а» выводится на консоль. Вызывается функция f(), и переменная передается в качестве аргумента.
- Внутри функции значение переменной уменьшается на 1.
- По возвращении из функции снова отображается значение переменной, которое оказалось на 1 меньше исходного значения.
Следовательно, изменения в переменной, переданной по ссылке в функцию, отражаются в вызывающей функции.
Функция подкачки с использованием Pass-By-Reference
Функция swap меняет местами значения двух переменных, которые она получает в качестве аргументов. Ниже приведена программа C++ для замены значений двух переменных с использованием передачи по ссылке.
Выход:
Объяснение:
- Сначала определяется прототип функции (необязательно, если функция определена перед основной функцией).
- Внутри основной функции значения двух переменных принимаются пользователем в качестве входных данных.
- Значения перед вызовом функции подкачки выводятся на консоль.
- После чего значения передаются в качестве аргумента функции подкачки.
- Функция swap использует вызов по ссылке и содержит код для замены двух переменных.
- По завершению функции значение двух переменных отображается в основной функции (после вызова swap).
- Переставленные значения отображаются на экране.
Передача по ссылке с указателями
Также можно передать адрес переменной из вызывающей функции и использовать его как указатель внутри вызываемой функции. Это позволяет немного более явно изменять значения переменных в функции.
Ниже приведена программа C++ для реализации передачи по ссылке с указателями:
Объяснение:
- Во-первых, функция определяется с возвращаемым типом данных void и принимает значение в виде указателей (что обозначается знаком звездочки * в формальных параметрах).
- Функция уменьшает значение своего формального параметра на 1.
- После чего внутри основной функции целочисленная переменная с именем 'a' инициализируется значением 5.
- Затем отображается это значение. Вызывается функция, и в качестве аргумента передается адрес переменной.
- Внутри функции значение переменной указателя уменьшается на 1.
- По возвращении из функции снова отображается значение переменной, которое оказалось на 1 меньше исходного значения.