Du hast Glück, vor nicht allzu langer Zeit musste ich ebenfalls diese IMHO dämlichen Pointer in C anwenden.

Folgendes Beispiel hat mich dazu gebracht, Pointer wirklich zu verstehen:
http://home.fhtw-berlin.de/~junghans...LES/linklst1.c

Ein ganz allgemeiner Verwendungszweck: Du kannst dir jederzeit zusätzlichen Speicher abzwacken, wenn du ihn brauchst (anstatt von vornherein zig Speicherstellen zu belegen). Einfaches Beispiel: Ein Adressbuch, was nur soviel Speicher braucht, wie viele Einträge im Adressbuch vorhanden sind.

Pointer sind allerdings etwas tückisch: Gerade mit denen entstehen sog. Speicherleks, wenn du z.B. beim Löschen bestimmte Speicherstellen vergisst. Ein gutes Programm sollte (O-Ton meines Ausbilders) beim Beenden JEDE Speicherstelle, die per Pointer allociert wurde, wieder löschen.