#include "stdafx.h"
#include "stdarg.h"
#include "varargs.h"
//定义一个可变参数的函数
class Object
{
public :
int number ;
public :
Object()
{
number = 1000 ;
}
};
//参数,可变参数,
//返回,参数个数
//注意,可变参数函数一定要用__cdecl修饰
//可变参数,前面至少有一个固定参数。
int __cdecl printfObjects(int i,...)
{
int count = 0 ;
va_list arglist = NULL ; //定义参数指针
va_start(arglist, i) ; //将参数指针指向第一个参数
Object* pObj = NULL ;
do
{
pObj = va_arg(arglist, Object*);//依次取下面的参数
if(pObj != NULL)
{
count ++ ;
printf("count = %d,number = %d\n",count,pObj->number);
}
}
while( pObj!= NULL) ;
return count ;
}
int _tmain(int argc, _TCHAR* argv[])
{
Object obj1 ,obj2,obj3 ;
obj2.number = 2000 ;
obj3.number = 3000 ;
int count = printfObjects(0,&obj1,&obj2,&obj3);
printf("C=%d\n",count);
getchar();
return 0;
}