请问使用va_list有什么好处?

tjuzhangrui 2005-05-29 09:38:58
比如下面的程序
#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会体现出它的优点呢?
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjp6688 2005-05-30
  • 打赏
  • 举报
回复
方便
nasi00 2005-05-30
  • 打赏
  • 举报
回复
如果你需要可变的参数列表的话,就要用va_list了阿

不过绝大多数时候va_list不必要……
蒋晟 2005-05-30
  • 打赏
  • 举报
回复
max(1,2,3,4)这样的函数用参数数目可变函数比较方便。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧