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。