未知数量的函数参数c ++

时间:2015-02-08 06:33:37

标签: c++ function parameters

例如,我需要计算3个,5个,10个或更多个数字的平均值(我不知道具有以下函数的确切数字:

double average(/* Unknown number of parameters here */) {

}

所以,我需要计算参数的数量和总和的方法。我对c ++很陌生,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

你可以像这样编码。以下是详细信息:http://www.tutorialspoint.com/cprogramming/c_variable_arguments.htm

#include <stdio.h>
#include <stdarg.h>

double average(int num,...)
{

    va_list valist;
    double sum = 0.0;
    int i;


    va_start(valist, num); // initialize valist



    for (i = 0; i < num; i++)
    {
       sum += va_arg(valist, int);
    }

    va_end(valist); // clean memory

    return sum/num;
}

int main()
{
   printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
   printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}

答案 1 :(得分:0)

您可以使用初始化列表。

double average(std::initializer_list<int> i){...}

答案 2 :(得分:-1)

基于可变参数模板的另一种解决方案。优点:无需指定参数数量。

double sum(double value)
{
  return value;
}

template<typename... Rest>
double sum(double first, Rest... rest)
{
  return first + sum(rest...);
}

template<typename... Args>
double average(Args... args)
{
  return sum(args...) / sizeof...(Args);
}