#include<iostream> #include "stdarg.h" // 包含 va_list,va_arg,va_start,va_end等宏 using std::cout; using std::endl; int Sum(int firstArg,...) { int sum=0; va_list arg_ptr; //初始化指针,将指针指向第一个参数firstArg, //函数参数中必需有至少一个固定的参数,固定的参数用来初始化指针的指向。 va_start(arg_ptr,firstArg); //如何确定有多少个参数 //第一种方法:一般传递参数的时候将firstArg赋值为参数的个数 //for(int i=0;i<firstArg;i++) //{ // //va_arg(arg_ptr,int);用来取出当前指针指向的值后将指针指向下一个值。 // //第二个参数表示当前值的类型。 // int currentArg = va_arg(arg_ptr,int); // sum+=currentArg; //} //第二种方法:把最后一位参数设置为一个特殊的值,然后判断 //int currentArg=firstArg; //while(currentArg!=-1) //{ // sum+=currentArg; // currentArg = va_arg(arg_ptr,int); //} //用来将指针复位(设置为NULL) va_end(arg_ptr); return sum; } int main() { //第一种方法:一般传递参数的时候将firstArg赋值为参数的个数 //cout<<"sum(3,10,20,30):"<<Sum(3,10,20,30)<<endl; //第二种方法:把最后一位参数设置为一个特殊的值,然后判断 //cout<<"sum(10,20,30,-1):"<<Sum(10,20,30,-1)<<endl; system("pause"); return 0; }