变长参数函数定义由C标准库stdarg.h支持。我们以求和函数为例:
由于C中没有引用类型,因此变长参数不能是引用。va_list ap;定义一个参数列表;va_start(ap, counts);表示将counts变量的下一个参数作为参数列表ap的开始参数;va_arg(ap, T);表示从参数列表ap中取出一个类型为T的参数;va_end(ap);表示释放参数列表ap;stdarg.h中还有一个成员void va_copy(va_list dest, va_list src);用来复制一个参数列表,因为每一个参数列表用一次就完了,因此如果想多次使用的话,必须在参数列表使用前复制一个。