Pointers are very usefull if you need to handle larger data objects, like structs, arrays or strings. If such an object is larger than - let's say - 10 bytes, then it is better not to copy all the 10 bytes, but pass a pointer to that object instead.
The concept of "pass by reference" is implemented with pointers in C and C++.
Oliver