Open In App

C++ Functions – Pass By Reference

Several ways exist in which data (or variables) could be sent as an argument to a function. Two of the common ones are Passing by Value and Passing by Reference. Passing by reference allows a function to modify a variable without creating a copy. We have to declare reference variables. The memory location of the passed variable and parameter is the same. Therefore, any change to the parameter also reflects in the variable inside its parent function. This article focuses on discussing how to pass variables by reference in C++.

What is a Pass by Reference?

When a variable is passed as a reference to a function, the address of the variable is stored in a pointer variable inside the function. Hence, the variable inside the function is an alias for the passed variable. Therefore, any operations performed on the variable inside the function will also be reflected in the calling function. 



The & (address of) operator denotes values passed by pass-by-reference in a function. Below is the C++ program to implement pass-by-reference:




// 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;
}

Output

5
4

Explanation:

Hence, the changes to a variable passed by reference to a function are reflected in the calling function.

Swap function using Pass-By-Reference

The swap function swaps the values of the two variables it receives as arguments. Below is the C++ program to swap the values of two variables using pass-by-reference.




// 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;   
}

Output:

 

Explanation:

Pass by Reference with Pointers

It is also possible to pass the variable address from the calling function and use them as a pointer inside the called function. This allows a bit more explicitly in the change of variable values in the function. 

Below is the C++ program to implement pass-by-reference with pointers: 




// 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;
}

Output
5
4

Explanation:


Article Tags :