©
Ce document utilise Manuel du site Web PHP chinois Libérer
变量函数是一些函数(例如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); }
输出:
3a1.99900042.50000
C11标准(ISO / IEC 9899:2011):
7.16变量参数<stdarg.h>(p:269-272)
C99标准(ISO / IEC 9899:1999):
7.15变量参数<stdarg.h>(p:249-252)
C89 / C90标准(ISO / IEC 9899:1990):
4.8变量<stdarg.h>
| 用于Variadic函数的C ++文档 |
|:----|