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

11 лучших IDE для C++ (и редакторов кода) на 2022 год Программирование и разработка

Передача по ссылке позволяет функции изменять переменную без создания копии. Мы должны объявить ссылочные переменные. Расположение в памяти переданной переменной и параметра совпадает. Следовательно, любое изменение параметра также отражается в переменной внутри его родительской функции. В этой статье основное внимание уделяется обсуждению передачи переменных по ссылке в C++.

Что такое пропуск по ссылке?

Когда переменная передается как ссылка на функцию, адрес переменной сохраняется в переменной-указателе внутри функции. Следовательно, переменная внутри функции является псевдонимом переданной переменной. Следовательно, любые операции, выполняемые над переменной внутри функции, также будут отражены в вызывающей функции.

  • Эта способность отражать изменения может возвращать более одного значения функцией.
  • Кроме того, функция void может технически возвращать значения, используя этот метод.

Оператор & (адрес) обозначает значения, передаваемые по ссылке в функции. Ниже приведена программа C++ для реализации передачи по ссылке:

С++

// C++ program to implement 
// pass-by-reference
#include <iostream>
using namespace std;
 
void f(int & x) 
{
  x--;
}
 
// Driver code
int main() 
{
  int a = 5;
  cout << a << endl;
  f(a);
  cout << a << endl;
}

Выход

5
4

Объяснение:

  • Во-первых, функция определяется с возвращаемым типом данных void и принимает значение по ссылке (что обозначается знаком адреса &в формальных параметрах).
  • Функция уменьшает значение своего формального параметра на 1.
  • После чего внутри функции main целочисленная переменная с именем aинициализируется значением 5.
  • Значение «а» выводится на консоль. Вызывается функция f(), и переменная передается в качестве аргумента.
  • Внутри функции значение переменной уменьшается на 1.
  • По возвращении из функции снова отображается значение переменной, которое оказалось на 1 меньше исходного значения.

Следовательно, изменения в переменной, переданной по ссылке в функцию, отражаются в вызывающей функции.

Читайте также:  Веб-разработка на Python

Функция подкачки с использованием Pass-By-Reference

Функция swap меняет местами значения двух переменных, которые она получает в качестве аргументов. Ниже приведена программа C++ для замены значений двух переменных с использованием передачи по ссылке.

С++

// C++ program to swap the values
// of two variables using 
// pass-by-reference
#include <iostream>
 
// Prototype of the function
void swap(int &, int &);
  
// Driver code
int main()
{
  int x, y;
  
  // Inputting two variables
  printf("Enter the value of x and y\n");
  scanf("%d%d", &x, &y);
  
  // Displaying their values before swapping
  printf("Before Swapping\nx = %d\ny = %d\n"
          x, y);
  
  // Calling the function & sending variable 
  // values as argument      
  swap(x, y); 
  
  // Displaying their values after swapping
  printf("After Swapping\nx = %d\ny = %d\n"
          x, y);
  return 0;
}
  
// Function uses pass by reference method 
// to swap passed variable values
void swap(int &a, int &b)
{
  int temp;
  
  temp = b;
  b = a;
  a = temp;   
}

Выход:

Функция swap меняет местами значения двух переменных

Объяснение:

  • Сначала определяется прототип функции (необязательно, если функция определена перед основной функцией).
  • Внутри основной функции значения двух переменных принимаются пользователем в качестве входных данных.
  • Значения перед вызовом функции подкачки выводятся на консоль.
  • После чего значения передаются в качестве аргумента функции подкачки.
  • Функция swap использует вызов по ссылке и содержит код для замены двух переменных.
  • По завершению функции значение двух переменных отображается в основной функции (после вызова swap).
  • Переставленные значения отображаются на экране.

Передача по ссылке с указателями

Также можно передать адрес переменной из вызывающей функции и использовать его как указатель внутри вызываемой функции. Это позволяет немного более явно изменять значения переменных в функции.

Читайте также:  Функция Perror в C

Ниже приведена программа C++ для реализации передачи по ссылке с указателями:

С++

// C++ program to implement
// pass-by-reference with
// pointers
#include <iostream>
using namespace std;
 
void f(int *x) 
{
  *x = *x - 1;
}
 
// Driver code
int main() 
{
  int a = 5;
  cout << a << endl;
  f(&a);
  cout << a << endl;
}

Выход

5

4

Объяснение:

  • Во-первых, функция определяется с возвращаемым типом данных void и принимает значение в виде указателей (что обозначается знаком звездочки* в формальных параметрах).
  • Функция уменьшает значение своего формального параметра на 1.
  • После чего внутри основной функции целочисленная переменная с именем ’a’ инициализируется значением 5.
  • Затем отображается это значение. Вызывается функция, и в качестве аргумента передается адрес переменной.
  • Внутри функции значение переменной указателя уменьшается на 1.
  • По возвращении из функции снова отображается значение переменной, которое оказалось на 1 меньше исходного значения.
Оцените статью
bestprogrammer.ru
Добавить комментарий