Voor dit soort grapje gebruik ik ze meestal ook niet. Maar voor de volgende gevallen zijn ze wel handig:
(NB ik programmeer alleen in ANSI C)
1) Doorgeven van variabelen aan functies. Voor C geldt (weet niet of ook voor C++) dat als je een variabele aan een functie doorgeeft, er een kopie gemaakt wordt van die variabele en hiermee doet de functie alles. Als je dus iets wilt wijzigen in de oorspronkelijke variabele, moet je daarvan het adres en niet de waarde doorgeven. I.e. een pointer.
Met variabele bedoel ik alles van een getal/char/structure/array/pointer etc.
Hier ontkom je er dus niet aan om pointers te gebruiken.
2) Als je met grote structuren werkt (bv arrays) is het handiger om een pointer naar de structuur aan de functie door te geven, ipv dat deze een kopie moet maken van je hele structure.
3) Pointers zijn erg handig om mee door bv een array heen te lopen.
4) Je kunt pointers gebruiken om dynamische structuren te maken. Als bv een lijst:
typedef stuct list_t {
char *data;
list_t *volgende;
list_t *vorige;
} list_t;
Het maakt hierbij niet uit hoe veel elementen je hebt, je kunt er altijd meer toevoegen en ook routines voor tussenvoegen zijn eenvoudig.
5) Veel dingen (bv door array lopen) gaan met pointers veel sneller (minder instructies) dan op elke andere manier zonder pointers.
In de korte tijd die ik in deze reactie stop vergeet ik er vast wel een paar.
Pointers zijn even wennen en hoewel het waarschijnlijk mogelijk is om vrijwel alles zonder pointers te doen, is het zeker de moeite waard om er goed mee om te leren gaan. Je code wordt er overzichtelijker van en een heleboel problemen zijn ineens een stuk eenvoudiger op te lossen met pointers.
Doch ik moet je er wel even sterkte mee wensen

alhoewel het uiteindelijk allemaal wel mee zal vallen hoor.