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

时间:2021-11-12 17:58:52

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

可变参数列表是通过宏来实现的,定义于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 = ;
 9 
     /*
         准备访问可变参数
      */
     va_start( var_arg, n_values );  //第一个参数为va_list变量的名字,第二个参数为省略号前最后一个有名字的参数。初始化过程把va_list变量设置为指向可变参数的第一个参数
     
     /*
         添加取自可变参数列表的值
      */
     for( count = ; count < n_values; count +=  )
     {
         sum += va_arg( var_arg, int );  //可变参数必须从头到尾顺序逐个访问。在va_arg中注意不可以指定错误的类型。
     }
 
     /*
         完成处理可变参数
      */
     va_end( var_arg );
 
     return sum / n_values;
 }
 
 int main()
 {
     int a = average(, , , , , , , , , , );
     printf("The average: %d\n", a);
     return ;
 }