C/C++可变参数列表

我们非常熟悉的printf函数就是一种变长参数,简化版本的函数原型即为:

int printf(const char * _Format, ...); 

其中,第一个参数即为必须指定的格式字符串,后面的省略号表示数量不定的参数列表。

使用上面提到的三个点表示的省略号即可达到定义一个变长参数的函数的目的,但是函数中如何取出这里面的所有参数呢?

这里要使用到C语言中解决变长参数问题的若干宏定义va_startva_argva_end,他们均定义在stdarg.h头文件中,以va开头(表示variable-argument可变参数),可根据预先定义的系统平台自动获取相应平台上各个数据类型的偏移量。他们的使用方法为:

va_list ap;          //定义一个可变参数列表ap
va_start(ap, arg);   //初始化ap指向参数arg的下一个参数
va_arg(ap, type);    //获取当前参数内容并将ap指向下一个参数
va_end(ap);          //释放ap

首先定义一个va_list类型的变量ap,然后使用va_start初始化这个变量。初始化之后,ap即指向了参数arg后面的第一个参数,即不确定参数中的第一个。然后使用va_arg可以取出当前ap指向的这个参数的数值,并把ap指向了下一个参数,不断的进行这个操作可以取出变长参数中的所有参数。最后使用va_end清空这个变长参数列表。

简单例子
<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值