c / intermediate
Snippet
Funktionszeiger für Callbacks
Funktionszeiger ermöglichen die Übergabe von Funktionen als Argumente, was generische Programmiermuster erlaubt. Hier weiß 'mathOperation' nicht, was es mit 'a' und 'b' tun wird, bis es zur Laufzeit einen Zeiger auf die spezifische Funktion erhält.
snippet.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>void mathOperation(int a, int b, int (*operation)(int, int)) {printf("Result: %d\n", operation(a, b));}int add(int x, int y) { return x + y; }int multiply(int x, int y) { return x * y; }int main() {mathOperation(5, 3, add);mathOperation(5, 3, multiply);return 0;}
Erklärung
1
int (*operation)(int, int)
Definiert einen Zeiger namens 'operation' auf eine Funktion, die zwei Ints entgegennimmt und einen Int zurückgibt.
2
operation(a, b)
Ruft die Funktion auf, auf die der Zeiger 'operation' zeigt.
3
mathOperation(5, 3, add);
Übergibt die Adresse der 'add'-Funktion als drittes Argument.