C-Programmierung

Parameterpaare

Parameterlisten | | Listenparameter

Sind die Ellipsen-Parameter von unterschiedlichem Typ, so wird vereinbart, dass der Datentyp mit Hilfe von Parameterpaaren codiert wird.

double sum(char format, ...);

double s=sum('d', 1.0, 'f', 2.0f, '.')+sum('d', 1.0, 'f', 2.0f, 'i', 3, '.');
#include <stdarg.h>

double sum(char format, ...)
{
   va_list arg_ptr;
   double v,s;
   char c;

   va_start(arg_ptr, format);

   for (c=format,s=0.0; c!='.';)
   {
      switch (c)
      {
         case 'f':
         case 'd': v=va_arg(arg_ptr, double); break;
         default:
         case 'i': v=va_arg(arg_ptr, int); break;
      }
      s+=v;

      c=va_arg(arg_ptr, int);
   }

   va_end(arg_ptr);

   return(s);
}

C-Konvention: char und short werden beim Aufruf einer Ellipse immer als int abgelegt und float wird immer als double abgelegt.

Fallgrube: Die Argumente müssen den erwarteten Typen entsprechen, andernfalls erhält man seltsame Ergebnisse.

Parameterlisten | | Listenparameter

Options: