C 标准库 - <stdarg.h>

C 语言宏 va_start 用于初始化可变参数列表,必须在读取参数前调用。

定义

void va_start(va_list ap, last_arg);

va_start 是 <stdarg.h> 中的宏,初始化 va_list 以准备读取可变参数。

用法

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

int sum(int n, ...) {
    va_list args;
    va_start(args, n);   // n 是最后一个固定参数
    int total = 0;
    for (int i = 0; i < n; i++)
        total += va_arg(args, int);
    va_end(args);
    return total;
}

int main() {
    printf("sum = %d\n", sum(3, 10, 20, 30));
    return 0;
}

输出:

sum = 60

注意事项

va_start 的第二个参数必须是函数声明中最后一个固定参数;va_list 用完必须 va_end。