Zeiger können nicht nur auf Variablen zeigen sondern auch auf Funktionen. Diese besonderen Zeiger nennt man Funktionszeiger.
Nehmen wir zum Beispiel eine Funktion divide(), der wir einen Funktionszeiger auf eine Funktion übergeben, die aufgerufen werden soll, wenn eine Division durch 0 stattfindet. Diesen Mechanismus nennt man Callback.
#include<iostream>
using namespace std;
double divide(double lhs, double rhs, void callback())
{
if( -0.000001<rhs && rhs<0.000001 )
{
callback();
return 0;
}
return lhs/rhs;
}
void error()
{
cout<<"FEHLER\n";
}
int main()
{
divide(1,0,error);
}
callback ist ein Zeiger auf eine Funktion - nämlich auf error(). Um einen Zeiger auf die Funktion error() zu bekommen, lässt man einfach die Klammern weg: error.
Der Typ eines Funktionszeigers ist die Signatur der Funktion. Ein Zeiger auf eine Funktion int foo(int) kann nicht auf eine Funktion void foo(int) zeigen.
Für vertiefende Informationen zu Funktionszeigern empfehle ich: www.Function-Pointer.org.