请问使用va_list有什么好处?
比如下面的程序
#define ANSI
#include <iostream>
#include <stdlib.h>
#include <stdarg.h>
using namespace std;
int average1(int first, ...);
int average2(int* data,int size)
{
int sum=0;
for(int i=0;i<size;i++)
{
sum+=data[i];
}
return sum/size;
}
int main(int argc, char *argv[])
{
int ave1=average1(2,3,4,-1);
int a[3]={2,3,4};
int ave2=average2(a,3);
cout<<ave1<<endl;
cout<<ave2<<endl;
system("PAUSE");
return 0;
}
int average1( int first, ... )
{
int count = 0, sum = 0, i = first;
va_list marker;
va_start( marker, first ); /* Initialize variable arguments. */
while( i != -1 )
{
sum += i;
count++;
i = va_arg( marker, int);
}
va_end( marker ); /* Reset variable arguments. */
return( sum ? (sum / count) : 0 );
}
average1()和average2()两种方法有什么不同吗?
或者说,如果程序更复杂些,在什么样的情况下,选择va_list会体现出它的优点呢?