可变参数
stdarg.h 头文件提供了实现可变参数功能的函数和宏。具体步骤如下:
- 定义一个函数,最后一个参数为省略号,省略号前面可以设置自定义参数,一般传入参数的个数。
int func(int num,...){
}
- 在函数定义中创建一个 va_list 类型变量,它是一个参数列表,专门用来存参数的结构
- 使用 int 参数和 va_start 宏来初始化 va_list 变量为一个参数列表。
- 使用 va_arg 宏和 va_list 变量来访问参数列表中的每个项。
va_arg()有两个参数,第一个是va_list变量,第二个是取出来的参数的类型
- 使用宏 va_end 来清理赋予 va_list 变量的内存。
如:
#include<stdarg.h>
#include<stdio.h>
int sum(int num,...){
int sum=0;
va_list vl;
va_start(vl,num);//在这接收参数
for(int i=0;i<num;i++){
sum+=va_arg(vl,int);//有类似指针下移的操作
}
va_end(vl);
return sum;
}
int main(){
printf("%d\n",sum(5,1,2,3,42,9));
printf("%d",sum(8,1,2,3,42,9,2,31,45));
}
va_start(vl,num)接收num个参数
va_arg()有类似指针的操作,每次读取一个参数,然后下移读下一个
原文地址:http://www.cnblogs.com/Tenerome/p/Creview13.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性