C语言之可变参数列表

在函数原型中,列出了函数期望接受的参数,但是原型只能显示固定数目的参数,让一个函数在不同的时候,接受不同的数目的参数是不是可以的,答案是肯定的。

stdarg宏

可变参数列表是通过宏来实现的,这些宏是定义在stdarg.h头文件中,它是标准库的一部分,这个头文件声明了一个类型为va_list和三个宏-va_start,va_srg,va_end,我们可以声明一个类型为va_list的变量,与这几个宏配合使用,以访问参数的值,

在可变参数列表中会有省略号来标记这是可能传递数量和类型未确定的参数,在编写这个函数的原型时,也要使用相同的标法。

函数声明了一个名为va_arg的变量。它用来访问参数列表的未确定的部分,这个变量通过调用va_start来初始化,它的第一个参数是va_list变量的名字,第2个参数是省略号前最后一个有名字的参数,初始化过程把var_arg变量设置为指向可变参数部分的第一个参数,

为了访问这个参数,需要使用va_arg,这个宏接受两个参数,va_list变量,和参数列表中下一个参数的类型,在这个例子中,所有的可变参数都是整型,在有些函数中,你可能要通过前面获得的数据来判断下一个参数的类型,va_arg返回这个参数的值,并使var_arg指向下一个可变参数。

最后,当访问完毕最后一个可变参数之后,我们需要调用va_end

#include<stdarg.h>

 

 

float average(int n_values,...)

{

va_list var_arg;

int count;

float sum=0;

 

va_start(var_arg,n_values);

/*添加取自可变参数列表的值*/

for(count=0;count<n_values;count++)

{

sum+=va_arg(var_arg,int);

 

}

/*完成处理可变参数*/

 

va_end(var_arg);

return sum/n_values;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值