2

数値 n と n ints (可変数) を受け取るメソッドを作成しています。この関数は、n を含まない int の合計を返します。各パラメーターに個別にアクセスする方法にこだわっています。ここに私がこれまでに持っているものがあります.オンラインで読んで、うまくいけば私は正しい軌道に乗っています. ネットで見つけた便利そうな方法は次のとおりです。

va_start()
va_arg()
va_end()


int sumv(int n, ...)
{
  va_list list;
  int sum = 0;
  while(n>0)
  {
    //*********************
    //this is the part where I am stuck on, how do I get each paramater?
    //I know it will be an int
    //*********************
    n--;
  }
  return sum;
}
4

2 に答える 2

0

あなたは基本的にこれを探しています:

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

int sumv (int n, ...) {
    va_list list;

    int sum = 0;

    va_start (list, n);
    while (n-- > 0)
        sum += va_arg (list, int);
    va_end (list);

    return sum;
}

int main (void) {
    printf ("%d\n", sumv (5, 1, 2, 3, 4, 5));
    return 0;
}

これは、最初の 5 つの自然数の合計 を出力し15ます。

基本的な考え方はva_start、変数の引数が始まる前に、使用するリストと関数の最後の引数の両方を与えることです。

次に、 を呼び出すたびva_argに、指定された型の次の引数が返されます (intここ)。この特定のコードは、カウンターに基づいてそれを呼び出しますが、負の数が引数で有効でない場合は、最後に負の数などのセンチネル値を同様に使用できます。

次に、すべての引数を処理したら、 を使用va_endして処理を終了します。

于 2013-04-29T03:38:39.890 に答える