0 Tage Serie
c / intermediate
Snippet

Variadische Funktionen mit stdarg.h

Variadische Funktionen ermöglichen es einer Funktion, eine unbestimmte Anzahl von Argumenten zu akzeptieren. Der Header 'stdarg.h' bietet Makros wie 'va_start', 'va_arg' und 'va_end', um die Argumentliste sicher mithilfe eines 'va_list'-Objekts zu durchlaufen.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdarg.h>
double average(int count, ...) {
va_list args;
va_start(args, count);
double sum = 0;
for (int i = 0; i < count; i++) {
sum += va_arg(args, int);
}
va_end(args);
return sum / count;
}
int main() {
printf("Avg: %.2f\n", average(3, 10, 20, 30));
return 0;
}
Erklärung
1
va_list args;
Deklariert eine Variable, die die für va_start, va_arg und va_end benötigten Informationen enthält.
2
va_start(args, count);
Initialisiert die va_list, um Argumente abzurufen, die auf den Parameter 'count' folgen.
3
va_arg(args, int);
Ruft das nächste Argument in der Liste ab, interpretiert als der angegebene Typ (int).