In situations, where you may need to write a function that can take unknown number of arguments (parameters) instead of predefined number, you'll need to include stdarg.h header file in your C program which provides the functionality and macros to implement such variable arguments.
Syntax :
functionName(int, ... )
Such function must have its last argument defined as ellipses(...), and the first one must be an integer which defines the total number of variable arguments passed. You must create a va_list type variable in the function definition. Use va_start macro to initialize the va_list variable to an argument list and va_arg macro and va_list variable to access each item in argument list. Use va_end macro to clean up the memory assigned to va_list variable at the end.
Example :
#include <stdio.h> #include <stdarg.h> float findAverage(int num,...) { va_list data; float sum = 0.0; int i; /* initialize data for number of arguments */ va_start(data, num); /* access all the arguments assigned to data */ for (i = 0; i < num; i++) { sum += va_arg(data, int); } /* clean memory reserved for data */ va_end(data); return sum/num; } int main() { printf("Average of 1, 2, 3, 4, 5, 6, 7, 8, 9 and 10 is : %f\n", findAverage(10,1,2,3,4,5,6,7,8,9,10)); return 0; }
Leave a comment