Funktionszeiger |
Funktionen nehmen Raum im Speicher ein und haben demzufolge eine Adresse. Die Adresse von Funktionen kann in Variablen gespeichert werden. Über die gespeicherten Adressen lassen sich die Funktionen später aufrufen. Solche Funktionszeiger werden beispielsweise benötigt, um dem Betriebssystem mitzuteilen, welche Funktionen des Anwenderprogramms aufzurufen sind, wenn bestimmte Ereignisse eintreten. So wird beispielsweise in jedem ordentlichen UNIX-Programm eine Signalbehandlung durchgeführt. Dabei meldet das Anwenderprogramm dem Betriebssystem die Funktion, die es aufrufen soll, wenn das Programm terminiert wird. In dieser Funktion kann die Anwendung noch schnell ihre Daten sichern, bevor es dem Betriebssystem gehorcht und sich beendet.
An dieser Stelle steht im Buch die Abbildung "Syntaxgraph für Funktionszeiger" (graffuncptr)
tBaum * Einfuegen(tBaum *Blatt, int Inhalt); // Prototyp
Dann setzen Sie einen Stern vor den Funktionsnamen und schließen um beide eine Klammer. Schließlich müssen Sie noch die Parameternamen entfernen, und schon ist der Zeiger auf die Funktion definiert.
tBaum * (*EinfuegeZeiger)(tBaum *, int); // Funktionszeiger
Der Zeiger kann die Adresse einer Funktion durch direkte Zuweisung des Namens erhalten. Sie können dem Funktionsnamen dabei auch ein Adresszeichen voranstellen. Es schadet nicht und macht für den Leser etwas deutlicher, dass Sie die Adresse der Funktion ansprechen.
EinfuegeZeiger = Einfuegen; // erste Variante EinfuegeZeiger = &Einfuegen; // zweite Variante
Anker = EinfuegeZeiger(Anker, 22); // Aufruf über den Zeiger
|
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Einstieg in C++ Mit freundlicher Genehmigung und Unterstützung des Verlags galileo computing |
| Informatik-Ecke Einstieg in C++ |
(C) Copyright 2005 Arnold Willemer
|