the use of ... and its support macros va_arg, va_start, and va_end : function parameters « Function « C++ Tutorial






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

void vsmallest(char *message, ...);

int main()
{
 vsmallest("Print %d integers, %d %d %d",10,4,1);

 return(0);
}

void vsmallest(char *message, ...)
{
 int inumber_of_percent_ds=0;
 va_list type_for_ellipsis;
 int ipercent_d_format = 'd';
 char *pchar;
 pchar=strchr(message,ipercent_d_format);
  
 while(*++pchar != '\0') {
   pchar++;
   pchar=strchr(pchar,ipercent_d_format);
   inumber_of_percent_ds++;
 }
 printf("print %d integers,",inumber_of_percent_ds);

 va_start(type_for_ellipsis,message);

 while(inumber_of_percent_ds--)
   printf(" %d",va_arg(type_for_ellipsis,int));

 va_end(type_for_ellipsis);
}








7.3.function parameters
7.3.1.Passing int by value
7.3.2.Define function to accept three int parameters
7.3.3.Pass a pointer to a function.
7.3.4.Pass variable address to a function
7.3.5.Pass int array to a function
7.3.6.Declare int array parameter for a function without indicating the array length
7.3.7.Function parameter: Use int pointer to accept an array
7.3.8.Use array as function's parameter
7.3.9.Change the contents of an array using a function
7.3.10.Pass a string to a function: Invert the case of the letters within a string
7.3.11.Change a call-by-value parameter does not affect the argument
7.3.12.Demonstrate the pointer version of swap(): Exchange the values of the variables pointed to by x and y
7.3.13.Using reference parameters
7.3.14.Passing a two-dimensional array to a function
7.3.15.Passing an array to a function
7.3.16.var args has to be the last one
7.3.17.the use of ... and its support macros va_arg, va_start, and va_end
7.3.18.Handling an array parameter as a pointer