Why Pointers?
Address size is always constant irrespective of the data size of type.
The data could a single integer, a struct, an array, a file, a class object, but the address to any of these objects is a 32-bit or 64-bit entity.
Data to be created and destroyed dynamically.
Passing large structures to functions: pass pointer to structures.
Passing function as a parameter: pass pointers to functions.
NOTE : A pointer can be assigned another pointer if both are of the same type. Otherwise a cast must be used. Any pointer type can be assigned to a void *.