/ /引数の量が異なる関数呼び出し[重複] - c ++、関数、パラメータ、引数

引数の量が異なる関数呼び出し[重複] - c ++、関数、パラメータ、引数

たとえば、無制限(または、より正確には非常に大きな数)の同じ型引数の量を取る関数は、整数と言って、渡されたすべての整数の値を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は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を参照してください。