Número variable de argumentos

En ocasiones, podemos querer escribir una función que use un número variable de argumentos como parámetros. La función printf es un buen ejemplo de esto. C tiene tres macros definidas en la cabecera estándar stdarg.h que permiten utilizar un número variable de argumentos. También se pueden usar en C++, pero para ello necesitamos eliminar la comprobación de tipo que el compilador hace con todas las funciones en C++. Para ello se utilizan tres puntos en la lista de argumentos de la función. Veamos un ejemplo:

# include <iostream.h>

# include <stdarg.h>

void display_var(int number, ...);

main()
{
   int index = 5;
   int one = 1, two = 2;

   display_var (one, index);
   display_var (3, index, index + two, index + one);
   display_var (two, 7 ,3);
}

void display_var (int number, ...);
{
   va_list param_pt;
   va_start(param_pt, number);

   cout << "The parameters are " ;
   for (int index = 0; index < number; index ++)
     cout << va_arg(param_pt, int) << " " ;
   cout << '\n';
  va_end (param_pt); }


La salida de este programa será:

The parameters are 5.
The parameters are 5 7 6.
The parameters are 7 3.

Observamos que:

Estudiemos la definición de la función:

Un programa bien diseñado necesita algunas funciones en las que el tipo de argumentos no está completamente especificado. La sobrecarga de funciones y el uso de parámetros por defecto deben ser usados para resolver estas situaciones. Sólo cuando el número de argumentos y el tipo de argumentos varían se debe utilizar las funciones con número variable de argumentos. Naturalmente, el uso de un número variable de argumentos en una función conduce a un código oscuro y apenas debe ser usado.
Free Web Hosting