在C语言中,我们可以实现同一个函数在不同的时候接受不同数目和类型的参数,即实现printf的参数效果。
相关类型、函数:
#include <stdarg.h>
void va_start(va_list ap, last);
type va_arg(va_list ap, type);
void va_end(va_list ap);
实现流程:
1)定义va_list类型变量;
2)va_start初始化该变量,定义参数个数;
3)循环调用va_arg获取所有参数;
4)va_end结束;
例:
va.c
#include <stdio.h>
#include <stdarg.h>
void
va_arg_test(int argNum, ... )
{
va_list var_arg;
int i;
va_start(var_arg, argNum);
for(i = 0; i<argNum; i++) {
printf("%d\n", va_arg(var_arg, int));
}
va_end(var_arg);
}
int
main(void)
{
va_arg_test(8, 23, 43, 1, 0);
return 0;
}