Wozu ist funktionszeiger?

Hallo!
Ich wollte mal wissen, wozu dient ein Funktionszeiger?
int *wozuistdas()

Bei dem Variablenzeiger ist es klar, man kann damit performantere Programme schreiben. Aber für den Funktionszeiger? Es wäre toll, wenn jemand mir ein Beispiel geben kann.

Vielen vielen Dank.

Hi,

stell dir einfach nen Taschenrechner vor, bei dem du für jede Grundrechenart eine Funktion schreibst. Alle haben logischerweise zwei Eingabeparameter und ein Ausgabewert… Zusätzlich legst du einen Funktionszeiger an, der das gleiche Format hat (also 2 Eingabe- und 1 Ausgabeparameter). Jetzt kannst du EINE Rechen-Routine schreiben, in der du deinen Funktionszeiger verwendest, und nicht VIER Stück, da du einfach deinem Zeiger eine deiner Funktionen zuweist. Dies geschieht z.B. auf den Rechen-Buttons und das eigentliche Rechnen auf dem Ergebnis-Button, ansonsten müsstest du für jede Rechenart eine eigene Routine haben, die könntest du dann aber net alle auf den Ergebnis-Butto packen.

Mfg - JENS

Hallo ???!

Ich wollte mal wissen, wozu dient ein Funktionszeiger?
int *wozuistdas()

Bei dem Variablenzeiger ist es klar, man kann damit
performantere Programme schreiben. Aber für den
Funktionszeiger? Es wäre toll, wenn jemand mir ein Beispiel
geben kann.

Eine Verwendung in C ist z.B. qsort() (Quick-Sort) aus der Standart-Bibliothek. Hier wird ein Funktions-Zeiger für die Vergleichsfunktion verwendet.

Ich benötige so etwas sehr oft im Zusammenhang mit verschiedenen Übertragungs-Protokollen. Bei der Initialisierung wird zuerst das Gerät identifiziert und danach ein Übertragungs-Protokoll vereinbahrt. Eine Möglichkeit besteht nun darin eine Variable zu setzen und an jedem Punkt wo etwas protokoll-spezifisch ist mit einem „switch“ die entsprechende Funktion aufzurufen. Dies hat einerseits den Nachteil, dass zur Laufzeit jedesmal CPU-Zeit für den „switch“ verbraucht wird und andererseits müssen, wenn ein neues Protokoll hinzukommt, alle „switch“ erweitert werden.
Mit Funktions-Zeigern, muss nur die Protokoll-Erkennung erweitert und die neuen Protokoll-Funktionen geschrieben werden (die Protokoll-Erkennung setzt dann einfach nur noch die Zeiger). Das restliche Programm muss nicht angepasst werden.

MfG Peter(TOO)