Definition of a Pointer
Definition of a pointer in C
Introduction
Let us consider the following statement:
int i=20 ;
It instructs the compiler:
- To reserve sizeof(int) memory space
- Name the reserved space as i
- store value 20 at the address/location of i
The memory map for given variable i is as follow:
we can get the above information using following code:
#include <stdio.h>
int main() {
    int i = 20;
    printf("\n Value of i= %d\n", i);
    printf("\n Address of i = %u\n", &i);
    return 0;
}
Output:
 Value of i= 20
 Address of i = 1835169048
Here in the statement,
printf("\n Address of i = %u\n", &i); 
the operator & is called as the address of operator. Since addresses are always whole numbers with no sign assigned to them, we use %u format string for such unsigned values.
Now, we can collect address of a variable in another variable as follows:
// address of i is assigned to variable j
j = &i; 
Here , j is not a normal variable, it is holding the address of integer variable i. Since all the variables in C need to be declared first before its use. Hence, the variable j is defined as pointer variable here, using following syntax:
// here J is a pointer variable. 
int i=10, *j;
// here j stores address of integer variable i
j = &i;
Here the operator * is called as value at address operator. When associated with any address the * operator also called as indirection operator, returns value stored at that location.
Definition of pointer in C
By using the above concept, Pointer can be defined as a variable that holds the address of another variable.
Now let us understand the concept of pointer using following program:
#include <stdio.h>
int main() {
    int i = 20,*j;
    // j is a pointer variable 
    j = &i;
    printf("Value of i= %d\n", i);
    printf("Address of i = %u\n", &i);
    printf("Value of i= %d\n", *(&i));
    printf("Address of i = %u\n", j);
    printf("Value of i= %d\n", *j);
    return 0;
}
Output:
Value of i= 20
Address of i = 1799386392
Value of i= 20
Address of i = 1799386392
Value of i= 20