void va
优质
小牛编辑
128浏览
2023-12-01
描述 (Description)
C库宏void va_start(va_list ap, last_arg)初始化要与va_arg和va_end宏一起使用的ap变量。 last_arg是传递给函数的最后一个已知固定参数,即省略号之前的参数。
必须在使用va_arg和va_end之前调用此宏。
声明 (Declaration)
以下是va_start()宏的声明。
void va_start(va_list ap, last_arg);
参数 (Parameters)
ap - 这是va_list的对象,它将保存使用va_arg检索其他参数所需的信息。
last_arg - 这是传递给函数的最后一个已知固定参数。
返回值 (Return Value)
NA
例子 (Example)
以下示例显示了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