Variadic functions
变量函数
变量函数是一些函数(例如printf
),其中需要可变数量的参数。
可变参数函数的声明使用省略号作为最后一个参数,例如 int printf(const char * format,...);. 有关语法和自动参数转换的更多详细信息,请参阅可变参数。
从函数体访问可变参数使用以下库工具:
| 宏|
|:----|
| 在头文件<stdarg.h>中定义 |
| va_start | 允许访问可变参数函数参数(函数宏)|
| va_arg | 访问下一个可变参数函数参数(函数宏)|
| va_copy(C99)| 制作可变参数函数参数(函数宏)|的副本
| va_end | 结束可变参数函数参数(函数宏)|的遍历
| 类型|
| va_list | 保存va_start,va_arg,va_end和va_copy(typedef)所需的信息|
例
打印不同类型的值。
#include <stdio.h>
#include <stdarg.h>
void simple_printf(const char* fmt, ...)
{
va_list args;
va_start(args, fmt
while (*fmt != '\0') {
if (*fmt == 'd') {
int i = va_arg(args, int
printf("%d\n", i
} else if (*fmt == 'c') {
// note automatic conversion to integral type
int c = va_arg(args, int
printf("%c\n", c
} else if (*fmt == 'f') {
double d = va_arg(args, double
printf("%f\n", d
}
++fmt;
}
va_end(args
}
int main(void)
{
simple_printf("dcff", 3, 'a', 1.999, 42.5
}
输出:
3
a
1.999000
42.50000
参考
- C11标准(ISO / IEC 9899:2011):
扩展内容
| 用于Variadic函数的C ++文档 |
|:----|