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 }

你可能感兴趣的:(可变参数)