va_arg, va_copy, va_start, and va_end : Variable Number of Arguments « Function « C Tutorial

C Tutorial
1. Language
2. Data Type
3. String
4. printf scanf
5. Operator
6. Statement
7. Array
8. Function
9. Structure
10. Pointer
11. Memory
12. Preprocessor
13. File
14. Data Structure
15. Search Sort
16. Wide Character String
17. assert.h
18. ctype.h
19. math.h
20. setjmp.h
21. signal.h
22. stdio.h
23. stdlib.h
24. string.h
25. time.h
26. wctype.h
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
C Tutorial » Function » Variable Number of Arguments 
8. 9. 1. va_arg, va_copy, va_start, and va_end
ItemValue
Header filestdarg.h
Declartiontype va_arg(va_list argptr, type);
void va_copy(va_list target, va_list source);
void va_end(va_list argptr);
void va_start(va_list argptr, last_parm);


Use va_arg(), va_start(), and va_end() macros together to pass a variable number of arguments to a

function. For example, printf(). The type va_list is defined by .

#include <stdio.h>
  #include <stdarg.h>

  double sum_series(int num, ...);

  /* Variable length argument example - sum a series. */
  int main(void)
  {
    double d;

    d = sum_series(50.50.250.1250.06250.03125);

    printf("Sum of series is %f.\n", d);
    return 0;
  }

  double sum_series(int num, ...)
  {
    double sum=0.0, t;
    va_list argptr;

    /* initialize argptr */
    va_start(argptr, num);

    /* sum the series */
    for; num; num--) {
      t = va_arg(argptr, double)/* get next argument */
      sum += t;
    }

    /* do orderly shutdown */
    va_end(argptr);
    return sum;
  }
Sum of series is 0.968750.
8. 9. Variable Number of Arguments
8. 9. 1. va_arg, va_copy, va_start, and va_end
w_w_w___.___ja_va2_s___.__co___m | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.