可变参数是通过宏来定义的,这些宏定义于stdarg.h头文件中,它是标准库的一部分,这个头文件声明了一个va_list类型和三个宏:va_start、va_arg和va_end。参数列表中的省略号...提示此处可能传递数量和类型未确定的参数。程序例子:
#include<stdio.h>
#include<stdarg.h>
float average(int n_values, ...)
{
va_list var_arg;
int count;
float sum = 0;
va_start(var_arg, n_values);
for(count = 0; count < n_values; count += 1)
{
sum += va_arg(var_arg, int);
}
va_end(var_arg);
return sum / n_values;
}
void main( void )
{
int arg;
arg = average(5, 1, 2, 3, 4, 5)
printf("%d\n", arg);
}
参考:《C和指针》的7.6节“可变参数列表”