C语言-菜鸟打怪升级之路-可变参数列表
来源:互联网 发布:泉方pubmed数据库 编辑:程序博客网 时间:2024/06/05 08:54
很多新手和我一样看到标题肯定会疑惑,什么是可变参数列表?那么先来看看下面这个函数
float average( int num, int v1, int v2, int v3, int v4, int v5, int v6)
{
}
代码块内(所谓代码块即函数大括号内部区域)的内容我们暂且忽略,上面这个函数是一个计算6个数平均值的函数。其问题也是显而易见,即我要算4个数的平均值怎么办?如果按照上面的写法,那就重新写一个函数float average( int num, int v1, int v2, int v3, int v4),那计算7个数平均值呢,100个数的平均值呢?这种方法的局限性已经非常明显了,这个程序显然是不可移植的,因为以上函数只能接受固定数量的参数。那么在不同的时候函数接受不同数目的参数是不是可以呢?答案是肯定的,这就是所谓的可变参数列表。
可变参数列表通过宏来实现,宏定义在stard.h中,我们要用到的仅仅是一个类型va_list和三个宏va_start、va_arg和va_end 接下来看看如何使用。
#include <starg.h> //首先需要用到这个头文件
float average( int num, ...) //你没有看错 ,那是省略号, 这种用法是合法的
{
va_list arg; //先申请一个va_list类型的变量
int i = 0;
float sum = 0;
va_start( arg, num );//通过这个宏函数初始化va_list类型的变量arg,传入参数为变量arg和...的前一个形参即num
for ( i = 0; i < num; i ++ )
{
sum += va_arg(arg,int );//这个宏函数传入参数为变量arg,以及该变量类型
}
va_end(arg);//完成处理可变参数
ruturn sum / num;
}
以上的函数可以轻松处理不同个数参数的平均值。
注意:va_arg无法正确识别作用可变参数之上的缺省类型提升。
2017/8/24
- C语言-菜鸟打怪升级之路-可变参数列表
- C语言之可变参数列表
- C语言之可变参数列表
- c语言:可变参数列表
- 【C语言】可变参数列表。
- C语言,可变参数列表
- C语言可变参数列表
- C语言-可变参数列表
- C语言可变参数列表
- 【C语言】可变参数列表
- c语言可变参数列表
- c语言 之 可变参数列表的应用
- c语言之可变参数
- C语言之可变参数
- c语言的可变参数列表
- c语言函数可变参数列表
- 深度理解C语言可变参数列表
- c语言函数可变参数列表
- NYOJ题目252-01串(动态规划)
- 著名互联网公司架构设计
- 国学的天空-傅佩荣有声系列3
- Bmob实现登陆
- sublime配置evernote_markdown
- C语言-菜鸟打怪升级之路-可变参数列表
- Android实现图片转换成圆形
- 51nod 1212 无向图最小生成树(prim算法和kruska算法) 新手小结
- JAVA初学者入手学习,学习JAVA需要哪些基础?
- 第六章 Realm及相关对象(四) Subject
- python学习[2]
- browser-solidity
- IE11版本找不到控件元素的问题解决方法
- WARN: Establishing SSL connection without server's identity verification is not recommended.