C语言 <stdarg.h> 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 - 这是传递给函数的最后一个已知固定参数。
-
返回值
没有。示例以下示例显示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