Before we start with pointers you must know what is a variable and a datatype.
int a;
This is the basic line in every program in 'C' . It means that we are asking the compiler to give us 2 bytes of space in memory and label that space as 'a'.
Now every block of memory has an address(the variable names are only to make our work easy. imagine remembering xx000345= x230989+xx0044563 instead of C= A+ B;)
This addresses can also be stored in variable and that variable is aclled pointer.
so pointers are variable storing the address of another variable.
int* b; means that "b" is going to store the address of a variable whose datatype is "int".
b=&a; // now b points to a;
Have you ever thought why do we need a datatype for a pointer even though it doesn't store a value.??
The Data type is needed when dereferencing the pointer so it knows how much data it should read. For example dereferencing a chart pointer should read the next byte from the adress it is pointing to while an int pointer should read 2 bytes.
Now what do we mean by dereferncing?
Dereferencing a pointer means getting the value that is stored in the memory location pointed by the pointer. The operator * is used to do this, and is called the dereferencing operator.
There is a lot to be discussed in pointers. like pointer to pointer, pointer arithmetic, pointer to function, object, structure array, constant pointer etc.
We shall do that in series to follow.