Pointers are awesome and you do need them. Let me tell you some of the cool shit you can do with pointers:
* Completely dynamic code-base -- use pointers for all your functions and arbitrarily set them at run-time to point to new functions. This allows for a kind of plugin system.
* Accessing other "variables" directly from functions.
* Pointing to shit on the heap. If you want to return certain objects from a function and they are stack based then when the function returns you lose your reference as the stack is gone. So you alloc shit off the heap and return a pointer to it.
* Binary dick trees.