Herramientas de usuario

Herramientas del sitio


varargs

Funciones con un número variable de parámetros

Para ello se requiere incluir el archivo de encabezados stdarg y declarar la función suma en el siguiente código:

  #include <stdio.h>
  #include <stdarg.h>
 
  int suma(int n, ...) {
    va_list ap; /* argument pointer */
    int s= 0;
    int k;
        
    va_start(ap, n); /* u es el último parámetro de la parte no variable */
    for (k= 0; k<n; k++)
      s += va_arg(ap, int);

    va_end(ap);
    return s;
  }

  int main() {
    int a= 1, b= 2, c= 3;
    printf("%d\n", suma(3, 1, 2, 3));
  }

La pseudo función va_arg se usa para extraer uno a uno los argumentos variables de la invocación. El tipos especificados deben coincidir exactamente con los tipos de la invocación. De otro modo los resultados son impredecibles. No hay ninguna forma de determinar el número de argumentos suministrado a una función con número variable de parámetros.

Estudie en los apuntes de Patricio Poblete una mini-versión de printf usando este mecanismo.

varargs.txt · Última modificación: 2016/04/14 10:14 por lmateu