Stimmt das sind zwei Paradebeispiele für den Einsatz von Zeigern...
verkettete Listen oder ähnliche Konstrukte mit denen man einen Speicher mit variabler Größe programmieren kann, dürften ohne Zeiger kaum zu realisieren sein.
Und bei Funktionen arbeite ich oft selbst dann mit Zeigern, wenn sie nur einen Wert zurückgeben. Genauer gesagt tue ich das immer wenn bei einer Funktion die Möglichkeit besteht daß sie nicht fehlerfrei ausgeführt wird, dann liefere ich per return nur einen Fehlercode, und verwende für den eigentlichen Rückgabewert dann eben einen Zeiger.
Mir ist auch gerade noch ein schönes Beispiel für den Einsatz von Funktionspointern eingefallen...
Angenommen man hat irgendwelche Daten die z.B. in einer verketteten Liste gespeichert sind, und mit diesen Daten möchte man nun verschiedene Dinge anstellen. Vielleicht möchte man nach einem bestimmten Wert suchen, oder die Liste sortieren oder jeden Wert irgendwie verändern. Dann kann man natürlich mehrere Funktionen schreiben, die dann eben die ganze Liste durchgehen, und dann für jeden Wert jeweils das tun was sie eben tun sollen.
ooooder man schreibt sich eine Funktion die den Teil der Arbeit übernimmt der immer gleich bleibt (die Liste durchgehen und für jedes Element irgendetwas tun), und übergibt dieser Funktion dann jeweils einen Funktionspointer auf eine Funktion die mit einem Element der Liste eben genau das tut was man in diesem konkreten Fall tun möchte.
kurz gesagt:
wenn man eine Menge von Funktionen mit deutlichen Gemeinsamkeiten hat, also Funktionen die alle fast das Gleiche machen, dann geht man eben her und fasst das was bei allen gleich ist in einer Funktion zusammen. Der Vorteil dabei ist natürlich, daß man nicht mehrfach den gleichen Code hat, was ansonsten bei Fehlern und Änderungen immer problematisch ist (da man daran denken muss diesen Code überall dort zu ändern wo er vorkommt).
Lesezeichen