可变长参数函数的参数数量可变。如printf,scanf等函数都是可变长参数函数。
对C语言来说,实现可变长参数函数要用到三个宏:va_start(),va_end(),va_arg()和一个特殊类型va_list,他们被包含在stdarg.h中。
void va_start(va_list ap, T last):初始化函数
void va_end(va_list ap);释放ap所占的内存
type va_arg(ap,type);每次调用va_arg都会修改用va_list声明的对象,从而使该对象指向参数列表中的下一个参数;
举例说明:
#include<iostream>
#include<cstdarg>
int ADD(int num, ...);
int main()
{
int a = ADD( 3, 4, 5, 6);
std::cout << a << std::endl;
getchar();
}
int ADD(int num, ...)
{
va_list ap;
va_start(ap, num);
int sum = 0;
int temp;