可变参数函数

来自cppreference.com
< cpp‎ | utility


 
 
 
 

可变参数函数是接收可变数量实参的函数(例如 std::printf)。

为声明可变参数函数,省略号要出现在形参列表后,例如 int printf(constchar* format, ...);,可以前附可选的逗号。语法上的额外细节、自动实参转换及替代方案见变长实参

为从函数体内访问可变参数,标准库提供下列库设施:

在标头 <cstdarg> 定义
启用对可变函数实参的访问
(宏函数)[编辑]
访问下一个可变函数实参
(宏函数)[编辑]
(C++11)
制造可变函数实参的副本
(宏函数)[编辑]
结束对可变函数实参的遍历
(宏函数)[编辑]
保有 va_startva_argva_endva_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 文档
close