| 
    va_arg
   
    Syntax:
   #include <stdarg.h> type va_arg( va_list argptr, type ); void va_end( va_list argptr ); void va_start( va_list argptr, last_parm ); The va_arg() macros are used to pass a variable number of arguments to a function. 
 For example: 
  int sum( int num, ... ) {
    int answer = 0;
    va_list argptr;            
    va_start( argptr, num );            
    for( ; num > 0; num-- ) {
      answer += va_arg( argptr, int );
    }           
    va_end( argptr );           
    return( answer );
  }             
                
  int main( void ) {            
    int answer = sum( 4, 4, 3, 2, 1 );
    printf( "The answer is %d\n", answer );           
    return( 0 );
  }             
This code displays 10, which is 4+3+2+1. Here is another example of variable argument function, which is a simple printing function: 
 void my_printf( char *format, ... ) {
   va_list argptr;             
   va_start( argptr, format );          
   while( *format != '\0' ) {
     // string
     if( *format == 's' ) {
       char* s = va_arg( argptr, char * );
       printf( "Printing a string: %s\n", s );
     }
     // character
     else if( *format == 'c' ) {
       char c = (char) va_arg( argptr, int );
       printf( "Printing a character: %c\n", c );
       break;
     }
     // integer
     else if( *format == 'd' ) {
       int d = va_arg( argptr, int );
       printf( "Printing an integer: %d\n", d );
     }          
     *format++;
   }            
   va_end( argptr );
 }              
                
 int main( void ) {             
   my_printf( "sdc", "This is a string", 29, 'X' );         
   return( 0 );
 }              
This code displays the following output when run: Printing a string: This is a string Printing an integer: 29 Printing a character: X |