用法
1.提供一个使用省略号的参数原型
2.在函数定义中创建一个va_list类型的变量
3.用宏把该变量初始化为一个参数列表
4.用宏访问参数列表
5.用宏完成清理工作
参数指针
va_start( argptr, n );
argptr是一个参数指针,指向了强制参数n后面的第一个参数
va_arg( argptr, int );
参数指针从当前位置跨越四个字节 ,并以int的读取方式读取这四个字节
然后一步步的把栈中所有的参数都读取完
#include <iostream>
#include <stdarg.h>
using namespace std;
// 函数add() 计算可选参数之和
// 参数:第一个强制参数指定了可选参数的数量,可选参数为int类型
// 返回值:和值,int类型
int add( int n, ... )
{
int i = 0;
int sum = 0;
va_list argptr;
va_start( argptr, n ); // 初始化argptr
for ( i = 0; i < n; ++i ) // 对每个可选参数,读取类型为int的参数,
sum += va_arg( argptr, int ); // 然后累加到sum中
va_end( argptr );
return sum;
}
int main(int argc, char* argv[])
{
cout<<add(4,1,2,3,4)<<endl;
return 0;
}