0 Tage Serie
c / intermediate
Snippet

Dynamischer Dispatch via Funktionszeiger

Funktionszeiger ermöglichen es, Funktionen als Argumente zu übergeben, was dynamisches Verhalten zur Laufzeit (Callbacks) erlaubt.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
void add(int a, int b) { printf("Sum: %d\n", a + b); }
void subtract(int a, int b) { printf("Diff: %d\n", a - b); }
void execute(void (*op)(int, int), int x, int y) {
op(x, y);
}
int main() {
void (*operation)(int, int) = add;
execute(operation, 10, 5);
operation = subtract;
execute(operation, 10, 5);
return 0;
}
Erklärung
1
void (*op)(int, int)
Deklariert einen Zeiger auf eine Funktion, die zwei Ints nimmt und void zurückgibt.
2
op(x, y);
Ruft die Funktion auf, auf die 'op' aktuell zeigt.