#include <iostream>
#include <cstdarg>
int add(const int a,...); //函数原型
int main()
{
using std::cout;
using std::endl;
cout << "\t可变参数函数功能验证程序\n"<< endl;
cout << "五个实参调用add求和:"<< add(5,1,2,3,4,5)<< endl;
cout << "九个实参调用add求和:"<< add(9,1,2,3,4,5,6,7,8,9)<< endl;
}
//可变参数函数,形参列表中的省略号(也就是三个英文句点:...)表明可以传递任意数量的实参
int add(const int ca,...) //第一个参数指定了参数列表中实参的个数
{
if (ca <= 0) //判断参数列表中参数的数量
return 0;
int sum = 0;
va_list pArg; //声明一个va_list类型的参数列表指针,它可以依次指向各个实参
va_start(pArg,ca);//va_start初始化pArg,设定它指向第一个实参,ca辅助pArg确定第一个实参的位置
for (int i=0; i<ca; i++)//使用for循环取出实参列表中的每一个值
{
sum = sum + va_arg(pArg,int);//va_arg返回pArg指向的实参的值,然后使pArg自增,指向下一个实参,int是实参的类型
} //va_arg的第二个参数int还能影响pArg的自增,如果它配置的不正确,将会出现错误的结果
va_end(pArg); //重置参数列表指针为空
return sum;
}
C++函数可变参数实现
最新推荐文章于 2024-04-09 21:24:56 发布