Pointers and references in C++
In this tutorial, we will learn about pointers and references in C++.
Pointers are one of the powerful features of C++. Pointers are used to access and manipulate addresses.
Everything you need to know about pointers and references in C++
We are going to learn the following :
- How to declare pointers?
- What are references? And what is dereferencing?
- Examples on pointers.
Pointers are variables that point to addresses of some other variable(s).
But before that, to find out the address of a variable, we use the &(reference) operator. It returns the address in which the variable is stored. It varies on each machine, with every time the program executed.
To give you an idea, here is a program to find out the address of a variable :
#include<iostream>
using namespace std;
int main()
{
int var1 = 10;
int var2 = 15;
int var3 = 20;
cout<<&var1<<endl;
cout<<&var2<<endl;
cout<<&var3<<endl;
return 0;
}Output –
0x72fe4c 0x72fe48 0x72fe44
Note : The 0x in the starting tells us that it is in Hexadecimal form.
Getting back to pointers; to declare a pointer, we use * operator. Pointers are declared as follows –
int *p; or int* p;
The statement above declares a pointer variable p. It holds the memory address of a integer variable.
We can declare a different data type pointer too, just by changing the data type in the above statement to the appropriate data type. Asterisk is a deference pointer, which means ‘pointer to’.
What are references?
We can assign address of a variable to another variable(pointer) by using ‘&’ operator. By using this operator, we can assign the address of a variable of the same data type to same data type pointer only. Otherwise, there is ‘type mismatch’ error.
To assign, the address of a variable to a pointer, it can be done in this way –
int a = 10; int *pointer; pointer = &a; cout<<"The value of a is "<<*pointer<<endl;
Here, the pointer pointer holds the address of the variable a, which might be something like 0x72fe44(just an example). To get the value of a that is stored at the address held by the pointer, we use the dereferencing operator (*) . This operator fetches the value stored at the address.
int val = *pointer;
This stores the value of pointer , which is 10, into the variable val.
Examples on pointers
Here are some examples on pointers –
1.
#include<iostream>
using namespace std;
int main()
{
int var = 10;
int *ptr;
cout<<"Value of var is: "<<var<<endl;
cout<<"Address of var is: "<<&var<<endl;
ptr = &var;
cout<<"Value of ptr is: "<<ptr<<endl;
cout<<"Address of ptr is: "<<&ptr<<endl;
cout<<"The value stored at address "<<ptr<<" is: "<<*ptr<<endl;
return 0;
}Output –
Value of var is: 10 Address of var is: 0x72fe3c Value of ptr is: 0x72fe3c Address of ptr is: 0x72fe30 The value stored at address 0x72fe3c is: 10
2.
// more pointers
#include <iostream>
using namespace std;
int main ()
{
int first = 5, second = 15;
int * p1, * p2;
p1 = &first; // p1 = address of first
p2 = &second; // p2 = address of second
*p1 = 10; // value pointed to by p1 = 10
*p2 = 20; // value pointed to by p2 = 20
cout << "first is: " << first <<endl;
cout << "second is: " << second <<endl;
p2 = p1; // p1 = p2 (value of pointer is copied)
*p1 = 40; // value pointed to by p1 = 20
cout << "first is " << first <<endl;
cout << "second is " << second <<endl;
return 0;
}Output –
first is: 10 second is: 20 firstvalue is 40 secondvalue is 20
Continue reading more articles:
Leave a Reply