qt C++ 变长实参的函数
来源:互联网 发布:html5 答题游戏源码 编辑:程序博客网 时间:2024/05/18 01:48
#include <cstdarg>
#include <iostream>
using namespace std;
double mean(int n ...)
{
int count(n);
va_list ap;
double sum=0;
va_start(ap,n);
for(int i = 0;i<count;i++)
{
sum+= va_arg(ap,double);
}
va_end(ap);
return sum/n;
}
int main()
{
double i = mean(4,45.24,45.2,76.4,89.4);
double y = mean(2,23.5,23.5);
cout<<i<<endl<<y<<endl;
return 0;
}
对于多参数的函数,cstdarg 提供了上面三个宏va_start(),va_arg(),va_end(),来解决,va_list,用来存储实参,
va_start用来
初始化list,第一个命名参数放在list的最后,而ap指向了list中倒数第二个参数,也就是第一个未命名参数,注意list的参数
顺序颠倒了,,,,
va_arg(ap,typename)
返回指向的那个参数,然后typename 用来确定移动长度
va_end(ap) 用来清除list