References in C++
References in C++
Here, in this page we will discuss about references in C++. A variable when declared as a reference becomes an alternate name for the existing variable by pointing to the existing memory instead of creating a new memory. They are also called as alias variables or link variables.Syntax
data_type &refernce_variabe=value_variable;
Example:
int a=5; int &z=a;//now z and a have same address
- In the above example, variables ‘a’ and ‘z’ are pointing to the same memory address
- So that ‘z’ becomes the alias name for ‘a’
- Any change in ‘a’ will also reflect change int ‘z’ and vice-versa
Program to demonstate reference variables
Run
#include <iostream> using namespace std; int main() { int a=10; int &b=a;//b is alias of a int &c=b;//c is alias of b cout<<"a:"<<a<<" b:"<<b<<" c:"<<c<<endl; c=20;//a,b also becomes 20 cout<<"a:"<<a<<" b:"<<b<<" c:"<<c<<endl; cout<<"&a:"<<&a<<" &b:"<<&b<<" &c:"<<&c<<endl;//a,b,c has same address return 0; }
Output:
a:10 b:10 c:10
a:20 b:20 c:20
&a:0x6ffe34 &b:0x6ffe34 &c:0x6ffe34
- Initially ‘b’ is made as an alias of ‘a’ by giving the address of ‘a’ to b now ‘c’ is made an alias of ‘b’, as ‘b’ is pointing a’s address ‘c’ also takes the address of ‘a’.
- Hence ‘a’, ‘b’, ‘c’ are having the same address and become an alias to each other.
- Now, ‘b’ is changed to 20, as a result, ‘a’ and ‘b’ also becomes 20 because they are having a common memory space.
Differences between Pointer Variables and Reference Variables
Pointer Variables | Reference Variables |
---|---|
Initialized anywhere and any number of times | Initialized only once and at declaration only |
Pointer variables have separate memory | Reference variable will point to the same memory of the value variable |
Pointers are not that secured because of reinitialization | They are secured as they are constant pointers |
It can be void or null | It cannot be void or null |
Advantage
When the reference variable is lost it can be accessed through another alias, but if the pointer is lost, the whole security comes into question.
Applications
- The internet architecture is developed by C++ under call- by- reference concept
- Many other applications like Chat dialogue box, we can observe gtalk box used in video conferencing, teleconferencing and live telecast etc.
Call by reference in C++
Run
#include <iostream> using namespace std; void swap(int& x, int& y) //aliasing a and b { int temp = x; x = y; y = temp; cout << "x:" << x << " y:" << y << endl; } int main() { int a = 2, b = 3; swap (a, b); //func_call cout << "a:" << a << " b:" << b << endl; return 0; }
Output:
x:3 y:2 a:3 b:2
- Here instead of passing address through pointers ‘x’, ‘y’ are made aliases to ‘a’, ‘b’
- As ‘x’ and ‘a’, ‘y’ and ‘b’ both are made to have the same address, change in one affects others
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Login/Signup to comment