c++ <stdarg.h> 解决变参问题的宏定义;
在读程序的过程中遇到的va_list类型不认识,百度得到的。:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html (此例子写的更通透,让我知道了function中的第一个参数穿的其实是个地址就是)(来源:http://blog.csdn.net/ID314846818/article/details/51074283)
当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表
void foo(...);
void foo(parm_list,...);
#include <iostream> #include <stdarg.h> using namespace std; int main() { int function(int,...); cout<<function(2,2,3)<<endl; cout<<function(4,2,4,6,8); return 0; } int function(int v,...){ int ReturnValue=0; int i=v; va_list ap ;//定义va_list类型变量,指向参数的指针ap; va_start(ap,v);//初始化这个变量,即指定这个变量所指向的有几个参数; cout<<ap[1]<<endl;//此时什么都输不出来; while(i>0) { ReturnValue+=va_arg(ap,int);//返回可变的参数。类型为int; i--; } va_end(ap);//结束标志 return ReturnValue/v;//返回的是均值; }