Basically,Pointer is used to hold the address...may be of a single variable or of an starting address of array (which we call chunk of memory)
One case where it is useful is, if we are passing an array to a function, we need not send the whole array at a time, by simply passing starting address of the array (i.e., pointer) there by making the entire array accessible in the function....
Another case is dynamic memory allocation...where memory is allocated during run time....