Code
#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;
}
#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;
}