0

たとえば、同じ型の引数を無制限に (より正確には、非常に大きな数で) 取ることができる関数 (整数としましょう) で、渡されたすべての整数の値を 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.

それで、パラメータを配列にする以外に、これを作る方法はありますか(私はそれがうまくいかないと思います)

4

1 に答える 1

2

可変引数を使用できます。

本質的に

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 は渡される引数の数です。

詳細については、MSDN を参照してください。

于 2013-09-16T19:56:51.170 に答える