## indirection operator in c example,indirection operator c language,use of indirection operator in c,purpose of indirection operator in c,indirection requires pointer operand,double dereference,c pointer to a pointer,c dereference,

What is indirection operator? Give an example.
The address of operator & is used to evaluate the address of its operand.
The indirection operator * is used to evaluate the value stored at the address given by its operand. The operand must be of pointer type; ie, it can either be an array (which is a self-referential pointer), a pointer to a variable (data pointer) or a pointer to a function (function pointer).
Example of a data pointer:
#include<stdio.h>
int main()
{
int val, a=10;
int *p;                       //declares a pointer variable
p=&a;                      //now p stores the address of a
val=*p;                  //now val stores the value of a
printf(" Address of a: %X", p);
printf("Value of a: %d",val);
return 0;
}
In the above program the statement int *p declares an integer pointer (a pointer that stores the address of an integer variable).
To store the address of a in p, the address of operator is applied to  a and the result is stored in p as shown in the instruction p=&a;
Now p=&a;
Suppose the address of a is 1004 i.e . &a=1004
Since  p stores  the address of a, then p=&a p=1004
Now the value present at the address 1004 is the value stored in a which is 10(a=10).
To access the value stored in a using the pointer variable p we need to apply the indirection operator * on p. When the indirection operator is applied on p (*p), it reads the value stored at the address contained in p; ie, the value stored at the address 1004; ie, the value of a. The result of indirection is stored in the integer type variable val  as shown in the statement val =*p;. The indirection operator is also called the value at operator as it gives the value stored at a particular address.
To read the address stored in p, the format specifier %X is used in the printf statement as addresses are generally in hexadecimal.
The relationship between pointers and arrays has been discussed to some extent while discussing the array subscript operator. Function pointers is an advanced concept that will be discussed in a later article on pointers.
The next article will continue with the unary operators and the other operators in C.