Everything

va_start


引数リスト走査用変数の初期化を行います。

[所属]

標準ライブラリ

[指定形式]

#include <stdarg.h>

void va_start(va_list ap, last-named-argument);

[詳細説明]

変数apを,可変個引数リストの先頭(last-named-argumentの次の引数)を指すように初期化します。

なお,可変個の引数を持つ関数funcを,移植性を持つ形で定義するには,次に示した形式を用います。

#include    <stdarg.h>
void func(arg-declarations, ...) {
    va_list ap;
    type    argN;
    va_start(ap, last-named-argument);
    argN = va_arg(ap, type);
    va_end(ap);
}

備考

arg-declarationsは,引数リストで,最後にlast-named-argumentが宣言されているものとします。後ろに続く“, ...”は可変個引数リストを示します。va_listは,引数リストの走査に用いられる変数(この例の場合ap)の型です。

[使用例]

#include    <stdarg.h>
void abc(int first, int second, ...) {
    va_list ap;
    int     i;
    char    c, *fmt;
    va_start(ap, second);
    i = va_arg(ap, int);
    c = va_arg(ap, int);    /*char型はint型に変換*/
    fmt = va_arg(ap, char *);
    va_end(ap);
}