Linked lists.
That's all I've pretty much used them for in my limited, academic based usage of C++:
template <class type>
struct Node {
type data;
Node *next;
Node(type d, Node *n) : data(d), next(n) {}
Node(type d) : data(d), next(NULL) {}
Node() {}
};
Pretty much. Languages like Java and C# don't have explicit pointers because you don't really need them, intelligent object references and you're fine.
And pointers are prime to error, not to mention messy. A pointer is really just an integer that the comp knows points to a memory address, so you can do addition with them, and lots of other bad stuff.