Функции C++ — передача по ссылке

Опубликовано: 28 Января, 2023

Существует несколько способов отправки данных (или переменных) в качестве аргумента функции. Двумя наиболее распространенными являются передача по значению и передача по ссылке. Передача по ссылке позволяет функции изменять переменную без создания копии. Мы должны объявить ссылочные переменные. Расположение в памяти переданной переменной и параметра совпадает. Следовательно, любое изменение параметра также отражается в переменной внутри его родительской функции. В этой статье основное внимание уделяется обсуждению передачи переменных по ссылке в 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 меньше исходного значения.