函数调用具有不同数量的参数

时间:2013-09-16 19:55:34

标签: c++ function parameters arguments

例如,一个函数可以使用无限(或更确切地说,非常大的数量)相同类型的参数,让我们说整数,然后使所有传递的整数的值为5

我要问的是,如果可以,我可以使用非固定数量的参数来制作函数。

void setIntToFive(UNKNOWN AMOUNT OF INTS){
    //a for loop to assign a value to all the passed arguments
}

然后每次用不同数量的参数调用它

int a;
int b = 5;
setIntToFive(a,b);
int c;
setIntToFive(a,b,c);//Notice how i add another argument.

那么,有没有一种方法可以做到这一点,除了使参数成为一个数组。(我认为它不会这样做)

1 个答案:

答案 0 :(得分:2)

您可以使用variable arguments

基本上

double average ( int num, ... )
{
    va_list arguments;
    double sum = 0;

    va_start ( arguments, num );
    for ( int x = 0; x < num; x++ )
    sum += va_arg ( arguments, double );
    va_end ( arguments );

    return sum / num;
}

va_list是一个用于保存传入的所有参数的结构,va_start将参数分配给该列表。 va_end在使用后清理列表。 num是传递的参数数量。

Check out the MSDN for more info.