C Tutorial/Language/Variable argument lists

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Calculate an average using variable argument lists

<source lang="cpp">/* Beginning C: From Novice to Professional, Fourth Edition By Ivor Horton ISBN: 1-59059-735-4 640 pp. Published: Oct 2006

  • /
  1. include <stdio.h>
  2. include <stdarg.h>

double average(double v1 , double v2,...); /* Function prototype */ int main(void) {

 double Val1 = 10.5, Val2 = 2.5;
 int num1 = 6, num2 = 5;
 long num3 = 12, num4 = 20;
 printf("\n Average = %lf", average(Val1, 3.5, Val2, 4.5, 0.0));
 printf("\n Average = %lf", average(1.0, 2.0, 0.0));
 printf("\n Average = %lf\n", average( (double)num2, Val2,(double)num1,
                                     (double)num4,(double)num3, 0.0));
 return 0;

} /* Function to calculate the average of a variable number of arguments */ double average( double v1, double v2,...) {

 va_list parg;              /* Pointer for variable argument list */
 double sum = v1+v2;        /* Accumulate sum of the arguments    */
 double value = 0;          /* Argument value                     */
 int count = 2;             /* Count of number of arguments       */
 va_start(parg,v2);         /* Initialize argument pointer        */
 while((value = va_arg(parg, double)) != 0.0)
 {
   sum += value;
   count++;
 }
 va_end(parg);              /* End variable argument process      */
 return sum/count;

}</source>

Average = 5.250000
      Average = 1.500000
      Average = 9.100000