可变参数

来源:互联网 发布:php ajax返回json数据 编辑:程序博客网 时间:2024/06/04 19:26

在函数的原型中 ,我们使用定义的形参总是与固定数目的。其实,让一个函数在不同的时候接受不同数目的参数也是可以的。为了实现可变参数列表,是通过宏来实现的。

这些宏定义在stdarg.h头文件中,下图为该头文件的解释


 

可变参数必须从头到尾按照顺序逐个访问,不可以从开始就访问参数列表中间的参数。并且参数列表中至少有一个命名参数,才可以使用va_start,这个参数的作用是用于查找参数列表的可变部分。

限制:1)这些宏无法判断实际存在的参数的数量

2)这些宏无法判断每个参数的类型。

eg:

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;}int main(){    average(3,1,2,3);    printf("%f \n",average(3,4,2,3));    return 0;}



原创粉丝点击