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 ++文档 |

|:----|