Code:
NAME
stdarg - variable argument lists
SYNOPSIS
#include <stdarg.h>
void va_start( va_list ap, last);
type va_arg( va_list ap, type);
void va_end( va_list ap);
DESCRIPTION
A function may be called with a varying number of argu-
ments of varying types. The include file stdarg.h
declares a type va_list and defines three macros for step-
ping through a list of arguments whose number and types
are not known to the called function.
You can find much more information from
man stdarg
You're doing right by using ... in the parameter list. the va_*() functions just let you pull those arguments off the stack.