C 可变参数(C与指针实例)

偶尔我们需要设计一些函数,它们的参数数目不是固定的,这样我们需要用到可变参数列表。

可变参数列表是通过宏来实现的,定义于stdarg.h头文件。

具体内容在《C与指针》

 1 #include <stdarg.h>
 2 #include <stdio.h>
 3 
 4 float average(int n_values, ... )
 5 {
 6     va_list var_arg; //用于访问参数列表的未确定部分,通过va_start来初始化
 7     int count;
 8     float sum = 0;
 9 
10     /*
11         准备访问可变参数
12      */
13     va_start( var_arg, n_values );  //第一个参数为va_list变量的名字,第二个参数为省略号前最后一个有名字的参数。初始化过程把va_list变量设置为指向可变参数的第一个参数
14     
15     /*
16         添加取自可变参数列表的值
17      */
18     for( count = 0; count < n_values; count += 1 )
19     {
20         sum += va_arg( var_arg, int );  //可变参数必须从头到尾顺序逐个访问。在va_arg中注意不可以指定错误的类型。
21     }
22 
23     /*
24         完成处理可变参数
25      */
26     va_end( var_arg );
27 
28     return sum / n_values;
29 }
30 
31 int main()
32 {
33     int a = average(1012345678910);
34     printf("The average: %d\n", a);
35     return 0;
36 }
posted @ 2013-08-29 20:25  alan_forever  阅读(381)  评论(0编辑  收藏  举报