/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Beispielprogramm p06070300.c */ /* aus "C fuer Java-Programmierer", Hanser-Verlag */ /* */ /* Demonstriert wird die Definition und der Aufruf einer Funk- */ /* tion mit einer variablen Anzahl von Parametern. */ /***************************************************************/ #include #include double arith_mittel(char *typen, ... ) { va_list arg_pt; double sum = 0; unsigned int anzahl = 0; va_start(arg_pt,typen); while (*typen!='\0') { if(*typen=='i') { int it = va_arg(arg_pt,int); sum += it; } if (*typen=='l') { long lg = va_arg(arg_pt,long); sum += lg; } if (*typen=='d') { double db = va_arg(arg_pt,double); sum += db; } anzahl++; *typen++; } va_end(arg_pt); return sum/anzahl; } int main(void) { int a = 2; long b = 5; int c = -1; double d = 6.1; double e = 4.8; int f = 7; double mittel; mittel = arith_mittel("iliddi", a, b, c, d, e, f); printf("%Mittel: %lf\n",mittel); return 0; }