可变参数函数
来自cppreference.com
可变参数函数是接收可变数量实参的函数(例如 std::printf)。
为声明可变参数函数,省略号要出现在形参列表后,例如 int printf(constchar* format, ...);,可以前附可选的逗号。语法上的额外细节、自动实参转换及替代方案见变长实参。
为从函数体内访问可变参数,标准库提供下列库设施:
在标头 <cstdarg> 定义 | |
启用对可变函数实参的访问 (宏函数) | |
访问下一个可变函数实参 (宏函数) | |
(C++11) | 制造可变函数实参的副本 (宏函数) |
结束对可变函数实参的遍历 (宏函数) | |
保有 va_start、va_arg、va_end 和 va_copy 所需的信息 (typedef) |
[编辑]示例
运行此代码
#include <cstdarg>#include <iostream> void simple_printf(constchar* fmt...)// C 风格 "const char* fmt, ..." 亦合法{va_list args;va_start(args, fmt); while(*fmt !='\0'){if(*fmt =='d'){int i =va_arg(args, int);std::cout<< i <<'\n';}elseif(*fmt =='c'){// 注意自动转换到整数类型int c =va_arg(args, int);std::cout<<static_cast<char>(c)<<'\n';}elseif(*fmt =='f'){double d =va_arg(args, double);std::cout<< d <<'\n';}++fmt;} va_end(args);} int main(){ simple_printf("dcff", 3, 'a', 1.999, 42.5);}
输出:
3 a 1.999 42.5
[编辑]参阅
可变参数函数的 C 文档 |