c++怎样编写不确定参数个数的函数?

即函数的参数的个数是不确定的,可能是1个,2个,或者100个,甚至更多。比如c的函数库里面的printf(...),scanf()等,这些函数里面的参数的个数都是不确定的... 即 函数的参数的个数是不确定的,可能是1个,2个,或者100个,甚至更多。

比如c的函数库里面的 printf(...),scanf()等,这些函数里面的参数的个数都是不确定的。

这样的函数该怎样写?

又如何在函数里面获取参数的个数,以及如何获取每个参数的值?
展开
 我来答
吃腻小鱼干的喵E8
2010-01-04 · TA获得超过136个赞
知道答主
回答量:44
采纳率:0%
帮助的人:49.5万
展开全部
重载和缺省都不能解决楼主的问题。想解决这个问题,必须用到va_list。
但是注意,并不是所有编译器都支持这个功能,下面这个简单的求均值函数在VC6.0下编译通过。希望楼主能用到自己的实际应用中。

#include <cstdarg>
#include <iostream>

using namespace std;

double average ( int num, ... )
{
va_list arguments; // A place to store the list of arguments
double sum = 0;

va_start ( arguments, num ); // Initializing arguments to store all values after num
for ( int x = 0; x < num; x++ ) // Loop until all numbers are added
sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
va_end ( arguments ); // Cleans up the list

return sum / num; // Returns some number (typecast prevents truncation)
}
int main()
{
cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl;
cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl;
}

补充一句:不确定输入参数个数的函数应该尽量的避免使用,除非万不得已,最好不要用。
下午三点浪
2010-01-04 · TA获得超过124个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:78.9万
展开全部
不确定参数个数的时候通常用的是函数的重载,可以理解成 函数名相同的两个不同的函数.

不确定参数类型的话可以用 模板(template).传什么类型就变成什么类型.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花甲苦读诗人A
2010-01-04
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
想到两种方法:

一是用函数重载,列出带有不同个数参数的函数;

二是用带默认值的形参实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式