Beispielprogramm: FUNKTZG.CPP
Das Programm FUNKTZG.CPP gibt ein Beispiel für die Verwendung eines Zeigers auf eine Funktion. Es muß gesagt werden, daß es sich hier um nichts Neues handelt, Zeiger auf eine Funktion sind in ANSI-C genauso verfügbar wie in C++ und funktionieren für beide Sprachen in derselben, hier beschriebenen Weise. In C Programmen wird dieses Konstrukt allerdings seltener verwendet, weshalb wir es hier erwähnen. Wenn Du in Zeigern auf Funktionen firm bist, kannst Du dieses Beispielprogramm getrost überspringen.
Das einzig Erwähnenswerte an diesem Programm ist der Zeiger auf eine Funktion, den wir in Zeile 7 kreieren. Wir deklarieren einen Zeiger auf eine Funktion, die nichts (void) zurückgibt und einen Parameter verlangt, eine Variable vom Typ float. Dir wird nicht entgangen sein, daß alle drei Funktionen, die wir in den Zeilen 4 bis 6 deklarieren, diese Vorgaben erfüllen und damit von diesem Zeiger aufgerufen werden können. Wenn Du in C keine Prototypen verwendet hast, werden Dir diese Zeilen etwas eigenartig vorkommen. Laß Dich aber jetzt nicht verwirren, wir werden auf Prototypen im nächsten Kapitel eingehen.
In Zeile 14 rufen wir die Funktion DruckeEtwas() mit dem Parameter Pi auf. In Zeile 15 weisen wir dem Funktionszeiger Funktionszeiger den Wert DruckeEtwas zu, um in Zeile 16 mittels des Funktionszeigers dieselbe Funktion noch einmal aufzurufen. Aufgrund der Zuweisung in Zeile 15 sind die Zeilen 14 und 16 also in ihrem Resultat absolut identisch. Die Zeilen 17 bis 22 zeigen noch einige weitere Beispiele für die Verwendung von Funktionszeigern. Schau Dir diese Beispiele in Ruhe an, ich lasse Dich mit ihnen alleine.
Da wir einem Zeiger auf eine Funktion den Namen einer Funktion zuweisen konnten, ohne einen Zuweisungsfehler zu produzieren, muß der Name einer Funktion ein Zeiger auf genau diese Funktion sein. Exakt das ist auch der Fall. Ein Funktionsname ist nichts Anderes als ein Zeiger auf die Funktion, allerdings ein konstanter Zeiger und damit unveränderbar. Dasselbe ist uns auch beim Studium der Arrays in ANSI-C untergekommen. Der Name eines Array ist ein konstanter Zeiger auf das erste Element des Array.
Da es sich beim Namen einer Funktion um einen Zeiger auf die Funktion handelt, können wir diesen Namen einem Funktionszeiger zuweisen und den Funktionszeiger verwenden, um die Funktion aufzurufen. Die einzige Bedingung ist, daß der Rückgabewert sowie die Zahl und die Art der Parameter übereinstimmen müssen. Die meisten C und C++ Compiler werden Dich nicht warnen, wenn die Parameterlisten bei der Zuweisung nicht übereinstimmen. Das wäre auch gar nicht möglich, weil die Zuweisung zur Laufzeit erfolgt, wenn keine Typeninformationen verfügbar sind.
Kompiliere das Programm und führe es aus.
Copyright © 1997, 1998, 2001-2006 Heinz Tschabitscher - Letzte Änderung 10. Dezember 2005
Heinz Tschabitscher - | Datenschutz | Impressum - Kommentare, Kritik, Anregungen, Träume?