C-Programmierung

Funktionszeiger

Zeiger auf Zeiger | | Einsatz von Funktionszeigern

Nicht nur Referenzen auf Variablen, sondern auch Referenzen auf Funktionen sind erlaubt. Wie bei Referenzen auf Variablen, erhält man die Adresse einer Funktion, über den Adress-Operator &.

Die dazugehörigen Pointer sind typisiert, d.h. sie zeigen auf eine Funktion mit einer bestimmten Signatur.

Syntax:

data_type (*function_pointer)(parameters); /* declaration of function pointer */

Fallgrube: Was ist der Unterschied zu data_type *function_pointer(parameters) bzw. (data_type *)function_pointer(parameters)?

Zuweisung der Funktions-Referenz an den Pointer:

data_type function(parameters) /* function declaration */
{
   ...
}

function_pointer = &function; /* get address of function */

Die Dereferenzierung eines Funktionszeigers hat den Aufruf der referenzierten Funktion zur Folge (mit den entsprechenden Argumenten):

data_type result=(*function_pointer)(arguments); /* call address */

Damit ist es möglich die Programmausführung zur Laufzeit anzupassen.

  • Funktionsauswahl zur Laufzeit
  • Verschiedenene Versionen von derselben Funktion.
  • Callbacks


Zeiger auf Zeiger | | Einsatz von Funktionszeigern

Options: