🔧 ユーティリティ ・ stdarg.h ・ C89
va_start の使い方void va_start(va_list ap, last);
可変長引数関数の内部で、可変部分の引数リストへのアクセスを開始するマクロ。最後の固定引数の名前を渡して初期化する。使用後は必ずva_endで後始末する必要がある。 第2引数(last)には必ず可変長引数の直前にある固定引数の名前をそのまま渡す決まりになっている。
#include <stdarg.h>
#include <stdio.h>
int sum(int count, ...) {
va_list ap;
va_start(ap, count);
int total = 0;
for (int i = 0; i < count; i++) total += va_arg(ap, int);
va_end(ap);
return total;
}
int main(void) {
printf("%d\n", sum(3, 1, 2, 3));
return 0;
}
⚠️ va_startとva_endは必ず対で使う。省略すると処理系によっては未定義動作になる。
アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ
va_start と一緒に使う関数もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。