C标准库学习--可变参数函数的实现方法

标准C语言中函数定义要求参数的类型和个数都是固定的,但是有写时候我们并不能确定参数的具体个数和类型,因此需要定义可变参函数,为解决这个问题,C标准库引入了stdarg.h,这个头文件中定义了一些宏,用来实现定义可变参函数。典型的可变参函数如printf。但是C编译器要求可变参数至少需要有一个固定参数。那么要实现一个可变参函数,需要做那些操作呢,其实很简单,只要做以下3步操作即可。
1、取得可变参数列表的指针。可以通过调用va_start()函数获得。
2、对可变参数列表进行操作。通过va_arg()获取每一个参数,调用一次获取一个参数。你可以在任何时候停止调用va_arg(),来忽略后续的若干参数。
3、调用va_end()结束对可变参列表的引用。

有了这个步骤,实现一个可变参函数就比较简单了,那我们先看下上面这几个参数的原型。

va_list //用于指向可变参数列表
void va_start(va_list ap, last-required-parameter);    //last-required-parameter 最后一个必须的参数
type va_arg(va_list ap, type);    //type为参数类型
void va_end(va_list ap);

下面看一段例子,看看如何使用上面的函数实现可变参函数:

#include <stdarg.h> 
#include <stdio.h>

int add_em_up(int count, ...)
{
    va_list ap;
    int i;
    int sum = 0;

    va_start(ap, count);

    for(i = 0;i < count; i++)
    {
        sum += va_arg(ap, int);
    }

    va_end(ap);

    return sum;
}


int main(int argc, char **argv)
{
    int sum;

    sum = add_em_up(5, 3,4,5,6,7);

    printf("sum = %d\n", sum);
    return 0;
}

结果输出:
sum = 25

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值