C++ Programmierung · 3 min read · Nov 22, 2025

Linux C Programmierung Tutorial Teil 25 - Funktionszeiger

Bis jetzt haben wir in dieser fortlaufenden C-Programmier-Tutorial-Serie das grundlegende Konzept von Zeigern sowie einige Aspekte im Zusammenhang mit Zeigern, wie Zeiger auf ein Array und Array von Zeigern, besprochen. Um unser Verständnis von Zeigern zu erweitern, werden wir in diesem Tutorial das Konzept von Zeigern auf Funktionen besprechen.

Funktionszeiger in der C-Programmiersprache

So wie wir Zeiger auf Variablen haben, kann es auch Zeiger auf Funktionen geben. Folgendes ist ein Beispiel für eine Deklaration eines Funktionszeigers:

void (*fn_ptr)(int)

Hier haben wir also einen Funktionszeiger namens ‘fn_ptr’, der auf jede Funktion zeigen kann, die void zurückgibt und eine Ganzzahl als Eingabe akzeptiert. Es versteht sich von selbst, dass dies nur der Deklarationsteil ist - wie bei jedem anderen Zeiger müssen Sie ihm eine Adresse (in diesem Fall die einer Funktion) zuweisen, um ihn zu verwenden.

Folgendes ist ein Beispiel, das diesen Zeiger verwendet:

#include   
  
void print_int(int a)  
{  
 printf("\n Der ganzzahlige Wert ist: %d\n",a);  
}  
  
int main()  
{  
 void (*fn_ptr)(int);  
 fn_ptr = &print_int;  
 (*fn_ptr)(10);  
  
 return 0;  
}

Wie Sie sehen können, haben wir zuerst eine Funktion ‘print_int’ definiert, die eine Ganzzahl akzeptiert und void zurückgibt. Dann haben wir in der ‘main’-Funktion ‘fn_ptr’ als Funktionszeiger deklariert, der auf Funktionen wie ‘print_int’ zeigen kann. Daraufhin haben wir die Adresse der Funktion ‘print_int’ an ‘fn_ptr’ zugewiesen und schließlich die Funktion über den Zeiger aufgerufen.

Hier ist die erzeugte Ausgabe:

Der ganzzahlige Wert ist: 10 

Es ist erwähnenswert, dass Sie dieses Programm weiter vereinfachen können, indem Sie & und * in den letzten beiden Zeilen vermeiden. Folgendes ist der modifizierte Code:

#include   
  
void print_int(int a)  
{  
 printf("\n Der ganzzahlige Wert ist: %d\n",a);  
}  
  
int main()  
{  
 void (*fn_ptr)(int);  
 fn_ptr = print_int;  
 fn_ptr(10);  
  
 return 0;  
} 

Weiterhin können Sie, ähnlich wie bei einem Array von Zeigern, auch ein Array von Funktionszeigern haben. Zum Beispiel ist folgendes ein Array von Funktionszeigern, das in der Lage ist, 3 Funktionsadressen zu speichern.

void (*fn_ptr[3])(int)

Und folgendes ist ein Beispiel, das dieses Array von Zeigern verwendet:

void print_int1(int a)  
{  
 printf("\n Der ganzzahlige Wert ist: %d\n",a);  
}  
  
void print_int2(int a)  
{  
 printf("\n Der ganzzahlige Wert ist: %d\n",a+1);  
}  
  
void print_int3(int a)  
{  
 printf("\n Der ganzzahlige Wert ist: %d\n",a+2);  
}  
  
int main()  
{  
 void (*fn_ptr[3])(int);  
   
 fn_ptr[0] = print_int1;  
 fn_ptr[1] = print_int2;  
 fn_ptr[2] = print_int3;  
   
 fn_ptr[0](10);  
 fn_ptr[1](10);  
 fn_ptr[2](10);  
  
 return 0;  
}

Hier ist die Ausgabe, die durch diesen Code erzeugt wurde:

Der ganzzahlige Wert ist: 10   
   
Der ganzzahlige Wert ist: 11   
   
Der ganzzahlige Wert ist: 12

Ein weiterer Aspekt von Funktionszeigern, den Sie kennen sollten, ist, dass Sie sie auch als Funktionsargumente verwenden können. Zum Beispiel kann es eine Funktion geben, die einen Zeiger auf eine Funktion als Argument akzeptiert. Zum Beispiel:

void some_random_func(void (*fn_ptr)(int)) 

Folgendes ist ein Beispielcode, der diese Funktion nutzt:

#include   
  
void another_random_func(int a)  
{  
 printf("\n Der eingegebene ganzzahlige Wert ist: %d\n", a);  
}  
  
void some_random_func(void (*fn_ptr)(int))  
{  
 fn_ptr(5);  
}  
  
int main()  
{  
 some_random_func(another_random_func);  
 return 0;  
}

Was wir hier gemacht haben, ist, dass wir eine Funktion mit dem Namen ‘some_random_func’ erstellt haben, die einen Funktionszeiger als Eingabe akzeptiert. Dann haben wir aus ‘main’ ‘some_random_func’ mit der Adresse einer anderen Funktion ‘another_random_func’ als Argument aufgerufen. Dann haben wir erfolgreich ‘another_random_func’ über den Zeiger aufgerufen.

Hier ist die Ausgabe:

Der eingegebene ganzzahlige Wert ist: 5 

Fazit

Funktionszeiger können nützlich sein, wenn Sie etwas namens ‘Callback-Mechanismus’ erstellen möchten (lesen Sie hier mehr darüber). Aber bevor Sie sich damit beschäftigen, ist es besser, wenn Sie ein gutes Verständnis dieses Konzepts haben. Wir empfehlen Ihnen, die Beispiele aus diesem Tutorial auf Ihrem lokalen Computer auszuprobieren (und auch neue zu erstellen). Bei Fragen oder Zweifeln hinterlassen Sie bitte einen Kommentar unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.