可变参数

本文介绍如何使用可变参数列表来创建能接收不同数量参数的函数。通过宏定义实现这一功能,详细展示了如何利用stdarg.h头文件中的宏进行参数的访问,并提供了一个计算平均值的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

这些宏定义在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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值