Passing by pointer Vs passing by Reference in C++

In C++, we can pass parameters to a function either by pointers or by reference. In both the cases, we get the same result. So the following questions are inevitable; when is one preferred over the other? What are the reasons we use one over the other?

Passing by Pointer:

// C++ program to swap two numbers using 
// pass by pointer. 
#include
using namespace std; 
  
void swap(int* x, int* y) 
    int z = *x; 
    *x = *y; 
    *y = z; 
  
int main() 
    int a = 45, b = 35; 
    cout 《 "Before Swap\n"; 
    cout 《"a = "  a  " b = " b "\n"; 
  
    swap(&a, &b); 
  
    cout "After Swap with pass by pointer\n"; 
    cout  "a = "  a " b = "  b "\n"; 
}
OUTPUT-
Before Swap
a = 45 b = 35
After Swap with pass by pointer
a = 35 b = 45

Passing by Reference:

// C++ program to swap two numbers using 

// pass by reference. 
  
#include  
using namespace std; 
void swap(int& x, int& y) 
    int z = x; 
    x = y; 
    y = z; 
  
int main() 
    int a = 45, b = 35; 
    cout  "Before Swap\n"; 
    cout  "a = "  " b = " b  "\n"; 
  
    swap(a, b); 
  
    cout  "After Swap with pass by reference\n"; 
    cout "a = " " b = "; b "\n"; 
} 
OUTPUT-

Before Swap
a = 45 b = 35
After Swap with pass by reference
a = 35 b = 45

Difference in Reference variable and pointer variable

References are generally implemented using pointers. A reference is same object, just with a different name and reference must refer to an object. Since references can’t be NULL, they are safer to use.
  1. A pointer can be re-assigned while reference cannot, and must be assigned at initialization only.
  2. Pointer can be assigned NULL directly, whereas reference cannot.
  3. Pointers can iterate over an array, we can use ++ to go to the next item that a pointer is pointing to.
  4. A pointer is a variable that holds a memory address. A reference has the same memory address as the item it references.
  5. A pointer to a class/struct uses ‘->'(arrow operator) to access it’s members whereas a reference uses a ‘.'(dot operator)
  6. A pointer needs to be dereferenced with * to access the memory location it points to, whereas a reference can be used directly.

                       ðŸ”š...🔜

Comments

Popular posts from this blog

Covid-19 Analysis and Visualization using Plotly Express

Artificial Intelligence (Problem Solving)

Linear Regression