Para declarar una función con un número de parámetros variable, hay que usar los 3 puntos:
Código
void function(int numParametros, ...)
Y aquí tienes un pequeño ejemplo que hice:
Código
#include <stdio.h> #include <stdarg.h> void funcion(int numParametros, ...) { va_list list; //variable de tipo va_list va_start(list, numParametros); //iniciamos la lista de parametros y le pasamos el número for (int i = 0; i < numParametros; i++) //recorremos la lista { char * buffer = (char*)va_arg(list, char *); //obtenemos los parámetros de izquiera a derecha puts(buffer); //escribimos } va_end(list); //limpiamos la lista } int main(int argc, char * argv[]) { funcion(3, "hola", "que tal", "esta es una funcion con parametros"); getchar(); return 0; }
Si te fijas, a la función va_arg le especifico que quiero obtener un parámetro de tipo char*, puedes especificar otros como int, double, etc..
La función printf para obtener el número de parámetros lo que hace es contar el número de % que se le pasa en la primera cadena y según la letra que le preceda obtiene de la lista un int, double, char*. En esta función de ejemplo, necesitamos especificar cuantos parámetros le pasamos.
http://www.cplusplus.com/reference/clibrary/cstdarg/va_arg/
Saludos.