C-standard-library-c-macro-va-start

提供:Dev Guides
移動先:案内検索

Cライブラリマクロ-va_start()

説明

Cライブラリマクロ* void va_start(va_list ap、last_arg)は、 *va_arg および va_end マクロで使用される ap 変数を初期化します。 last_arg は、関数に渡される最後の既知の固定引数です。 省略記号の前の引数。

このマクロは、 va_arg および va_end を使用する前に呼び出す必要があります。

宣言

以下は、va_start()マクロの宣言です。

void va_start(va_list ap, last_arg);

パラメーター

  • ap -これは va_list のオブジェクトであり、 va_arg を使用して追加の引数を取得するために必要な情報を保持します。
  • last_arg -これは、関数に渡される最後の既知の固定引数です。

戻り値

NA

次の例は、va_start()マクロの使用法を示しています。

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

int sum(int, ...);

int main(void) {
   printf("Sum of 10, 20 and 30 = %d\n",  sum(3, 10, 20, 30) );
   printf("Sum of 4, 20, 25 and 30 = %d\n",  sum(4, 4, 20, 25, 30) );

   return 0;
}

int sum(int num_args, ...) {
   int val = 0;
   va_list ap;
   int i;

   va_start(ap, num_args);
   for(i = 0; i < num_args; i++) {
      val += va_arg(ap, int);
   }
   va_end(ap);

   return val;
}

上記のプログラムをコンパイルして実行し、次の結果を生成しましょう-

Sum of 10, 20 and 30 = 60
Sum of 4, 20, 25 and 30 = 79