可变参数列表stdarg.h

可变参数列表还是比较简单的,下面放一个程序: 
1
//指定数量的值的平均值
2 #include<stdarg.h>
3 float(int values,...)
4 {
5 va_list var_arg;
6 int count;
7 float sum=0;
8
9 var_start(var_arg,n_values);//准备访问可变参数
10 for(count=0;count<n_values;count+=1) //添加取自可变参数表的值
11 {
12 sum+=var_varg(var_arg,int);
13 }
14 var_end(var_arg); //完成处理可变参数
15 return sum/n_values;
16 }
头文件中声明了一个类型va_list和三个宏va_start、va_arg、va_end。

首先,函数声明了一个叫var_arg的变量,它用于访问参数列表的未确定部分,这个变量通过调用va_start来初始化。她的第一个参数是va_list变量的名字,第二个参数是省略号前最后一个有名字的参数。初始化过程把va_arg变量设置为指向可变参数部分的第一个参数。

va_arg接收两个参数,第一个是va_list变量,第二个是参数列表中下一个参数的类型。va_arg返回这个参数的值,并使var_arg指向下一个可变参数。


最后,访问完毕后,需要调用va_end,参数为var_arg变量。
posted @ 2013-08-05 10:47  boole  阅读(188)  评论(0)    收藏  举报