Pointers in C++

In  a  C++ programming language, variable is used to hole the value & this variable stored in a memory. 

Each variable has a address to identify where these variables actually stored in a memory.  

 In a C++  programming language, pointer is a variable which can hold the address of another variable.  

 Accessing Address of Variable

In a system every memory location has its address & we can access the address using ampersand (&) operator.

This ampersand (&) operator  denotes an address in memory. 

Ex:   int  i = 20;
      char c = ‘a’;

In the above example, there are two variable i & c.

Integer variable “i” stores the value 10 at memory location 1024(for example) and character variable “c” stores the value ‘a’ at memory location 1026.

cout<<“\n value of  variable i=  “<<  i ;
cout<<“\n value of  variable c=  “<< c ;

Output

value of  variable i= 20
value of  variable c= a

If we want to print the address of variable ‘i and c’ then we need ampersand (&) operator  .

   cout<<“\n Address of  variable i =  “<< &i ;
   cout<<“\n Address of  variable c= “<< &c ;

Output:           Address of  variable i =   1024
                        Address of  variable c=   1026

Note: When you run this program, address are printed might be different.Example: Write a program to print the address of the variable.

#include using namespace std;
int main() {

        int v1;
        int v2;
        float v3;

        cout << "\n Address of  variable v1=   " << & v1;
        cout << "\n Address of  variable v2=  " << & v2;
        cout << "\n Address of  variable v3=  " << & v3;

        return 0;
}

Output

Address of  variable v1=   0x7ffdd72d170c
 Address of  variable v2=  0x7ffdd72d1710
 Address of  variable v3=  0x7ffdd72d1714

Note: Each and every time when you run this program these variables stored in a different memory location.

Pointer Variable

pointer  variable is hold the address of another variable.

#include 

using namespace std;
int main() {
        int i = 20; // declare & initialize variable i  
        int * ptr; // declare a pointer variable ptr

        ptr = & i; //  ptr (pointer variable) holds the address of variable i.

        cout << "\n Address of  variable i =   " << & i;
        cout << "\n Address of  variable i =  " << ptr;

        return 0;
}

Output

 Address of  variable i =   0x7fff9a23444c
 Address of  variable i =  0x7fff9a23444c

Value at address

In the above example, there are two variable, first is normal variable ‘i’ & pointer variable ‘ptr’.

Integer variable “i” stores the value 10 at memory location 1024(for example) and pointer variable “ptr” stores the address of variable  ‘i’ at memory location 3045.

Example:

#include
using namespace std;
int main() {
        int i = 10; // declare & initialize variable i  
        int * ptr; // declare a pointer variable ptr

        ptr = & i; //  ptr (pointer variable) holds the address of variable i.

        cout << "\n value of  variable i=  " << * ptr;

        return 0;
}

Output:

value of  variable i=  10

Note: Pointer variable “ptr” prints the address of variable and “*ptr” prints the value of i. *variable name (*ptr) is also called value at address.

Example:

#include 

using namespace std;
int main() {

        int a = 4;
        int * b;
        b = & a;
        cout << "Address of a = " << & a;
        cout << "\n Address of a = " << b;

        cout << "\n Address of b = " << & b;
        cout << "\n Value of b =" << b;

        cout << "\n Value of a = " << a;
        cout << "\n Value of a = " << * ( & a);
        cout << "\n Value of a = " << * b;

        return 0;

}

Output

Address of a = 2464
 Address of a = 2464
 Address of b = 2466
 Value of b =  2464
 Value of a = 4
 Value of a = 4
 Value of a = 4

Note: When you run this program, address are printed might be different.

Pointer to Pointer

In a C language, a pointer is an address. Normally, a pointer variable contains the address of a another variable. 

A pointer to a pointer is a chain of pointers. 

Or

Pointer to pointer means one pointer variable holds the address of another pointer variable.

Example:

#include 

using namespace std;

int main() {

        int a = 4;
        int * b, ** c;
        b = & a;
        c = & b;
        cout << "Address of a = " << & a;
        cout << "\n Address of a = " << b;
        cout << "\n Address of a = " << * c;

        cout << "\n Address of b = " << & b;
        cout << "\n Address of b = " << c;

        cout << "\n Address of c =" << & c;

        cout << "\n Value of c = " << c;
        cout << "\n Value of c = " << * ( & c);

        cout << "\n Value of b = " << b;
        cout << "\n Value of b = " << * ( & b);
        cout << "\n Value of b = " << * c;

        cout << "\n Value of a = " << a;
        cout << "\n Value of a = " << * ( & a);
        cout << "\n Value of a = " << * b;
        cout << "\n Value of a = " << ** c;
        return 0;

}

Output

 Address of a = 2464
 Address of a = 2464
Address of a = 2464
 
Address of b = 2466
Address of b = 2466

Address of c = 2468

Value of c =  2466
Value of c =  2466

 Value of b =  2464
 Value of b =  2464
 Value of b =  2464
 
Value of a = 4
 Value of a = 4
 Value of a = 4
 Value of a = 4


NULL Pointers

A pointer that is assigned NULL is called a null pointer. We must initialize NULL pointer during variable declaration.

A null pointer refers to pointer variable that does not point to a valid address.

Generally NULL pointer is used when you do not have an exact address to be assigned.

#include 

using namespace std;
int main() {

        int * ptr = NULL;

        cout << "The value of ptr is : " << ptr;

        return 0;
}

Output

The value of ptr is : 0
Categories C++