不被看出wordpress开发,专业seo站长工具全面查询网站,网站内容为王,汽车网站源码C中传递參数时#xff0c;有时候不确定參数的数量#xff0c;这时候能够使用可变參数。例如以下#xff1a; 1、std::initializer_list C11标准#xff0c;使用方法类似vector#xff0c;參数类型需同样。使用方法例如以下#xff1a; #include initializer_list… C中传递參数时有时候不确定參数的数量这时候能够使用可变參数。例如以下 1、std::initializer_list C11标准使用方法类似vector參数类型需同样。使用方法例如以下 #include initializer_list void method(std::initializer_listint il) { for(auto i: il) { printf(%d, i) ; } } int _tmain(int argc, _TCHAR* argv[]) { method({1, 3, 4, 6, 7}) ; return 0 ; } 2、省略符形參 省略符形參是为了便于C程序訪问某些特殊的C代码而设置的这些代码使用了名为varargs的C标准库功能。通常省略符形參不应用于其它目的。 备省略符形參应该只用于C和C通用的类型。特别注意的是大多数类类型的对象在传递给省略符形參时都无法正确拷贝。 省略符形參必须在參数列表的最后而前面必须至少有一个形參。 使用方法例如以下 #include stdarg.h void method(int i, ...) { int v ; va_list params ;//声明可变參数列表 va_start(params, i) ; //依据可变參数前的參数获得可变參数的起始地址 do{ v va_arg(params, int) ; //从可变參数列表中获得參数的值类型为int printf(%d, v) ; }while(v ! 0) //须要自己设置可变參数列表的结束标志即当读到某个值时表示可变參数列表到达末尾假设没有设置结束标准会继续读取内存数据会出现意想不到的问题。 va_end(params) ; //结束 } //使用省略符形參 格式化字符串 void format(const char* format, ...) { char buf[1024] ; va_list params ; va_start(params, format) ; vsnprintf_s(buf, 1024, 1024, format, params) ; va_end(params) ; printf(%s, buf) ; } 3、可变參数宏 #define FORMAT(format, ...) format(format, ##__VA_ARGS__) //使用 ##__VA_ARGS__传递可变參数 int _tmain(int argc, _TCHAR* argv[]) { method(1, 3, 4, 6, 7, 0) ; format(int: %d, string: %s, float: %f, 10, test, 1.23) ; FORMAT(int: %d, string: %s, float: %f, 10, test, 1.23) ; return 0 ; } 转载于:https://www.cnblogs.com/zfyouxi/p/4007920.html