#include <stdarg.h>
必须:
(1)在函数原型中使用省略号;
(2)在函数定义中创建一个va_list类型的变量;
(3)用宏将该变量初始化为一个参数列表;
(4)用宏访问这个参数列表;
(5)用宏完成清理工作。
宏va_start() 把参数列表复制到va_list变量中,有两个参数:va_list类型的变量和参量
parmN
宏va_arg() 访问参数列表中的内容,有两个参数:va_list类型的变量和类型名
宏va_end() 完成清理工作,释放动态分配的内存
宏va_copy() 保存va_list副本
#include <stdio.h>
#include <stdarg.h>
double sum(int, ...);
int main(void)
{
double s;
s = sum(3, 1.1, 2.2, 3.3);
printf("sum(1.1,2.2,3.3) = %f/n", s);
return(0);
}
double sum(int lim, ...)
{
va_list ap; // declare variable used to save para
double total = 0;
int i;
va_start(ap, lim); // initialize ap to para list
for(i=0; i<lim; i++){
total += va_arg(ap, double); // visit para list
}
va_end(ap); // clean
return(total);
}