0% found this document useful (0 votes)
53 views4 pages

Variable Length Agruments

The document discusses variable length arguments in C. It explains that functions can be defined to accept a variable number of parameters using ellipses (...) and the stdarg.h header file. It provides steps for implementing variable arguments, including initializing a va_list variable, accessing arguments with va_arg, and cleaning up with va_end. It includes an example of a function that calculates the average of a variable number of integers passed to it.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views4 pages

Variable Length Agruments

The document discusses variable length arguments in C. It explains that functions can be defined to accept a variable number of parameters using ellipses (...) and the stdarg.h header file. It provides steps for implementing variable arguments, including initializing a va_list variable, accessing arguments with va_arg, and cleaning up with va_end. It includes an example of a function that calculates the average of a variable number of integers passed to it.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Vikram Computer Institute Storage Classes in C

LEARN HOW TO THINK & THINK HOW TO DEVELOP

Variable Length Argument in C


when you want to have a function, which can take variable number of arguments, i.e.,
parameters, instead of predefined number of parameters. The C/C++ programming
language provides a solution for this situation and you are allowed to define a function
which can accept variable number of parameters based on your requirement. The
following example shows the definition of such a function.

int func(int, ... ) {


   .
   .
   .
}
int main() {
   func(1, 2, 3);
   func(1, 2, 3, 4);
}

It should be noted that the function func() has its last argument as ellipses, i.e. three
dotes (...) and the one just before the ellipses is always an int which will represent
the total number variable arguments passed. To use such functionality, you need to
make use of stdarg.h header file which provides the functions and macros to
implement the functionality of variable arguments and follow the given steps −

 Define a function with its last parameter as ellipses and the one just before the ellipses is
always an int which will represent the number of arguments.
 Create a va_list type variable in the function definition. This type is defined in stdarg.h
header file.
 Use int parameter and va_start macro to initialize the va_list variable to an argument
list. The macro va_start is defined in stdarg.h header file.
 Use va_arg macro and va_list variable to access each item in argument list.
 Use a macro va_end to clean up the memory assigned to va_list variable.
Now let us follow the above steps and write down a simple function which can take
the variable number of parameters and return their average −

Example
#include <stdio.h>

#include <stdarg.h>

double average(int num,...) {

   va_list valist;

   double sum = 0.0;

   int i;

   va_start(valist, num); //initialize valist for num number of


arguments

1| Institute of Professional Computer Programming & Designing, Contact 95027 83007


Indian Bank Road, Veerabhdra Swamy temple Backside, Bhimavaram - 1, W. G Dist., A.P.
Vikram Computer Institute Storage Classes in C
LEARN HOW TO THINK & THINK HOW TO DEVELOP

   for (i = 0; i < num; i++) {

      //access all the arguments assigned to valist

      sum += va_arg(valist, int);

   }

   va_end(valist); //clean memory reserved for valist

   return sum/num;

int main() {

   printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));

   printf("Average of 5, 10, 15 = %f", average(3, 5,10,15));

// C program to demonstrate use of variable


// number of arguments.
#include <stdarg.h>
#include <stdio.h>

// this function returns minimum of integer


// numbers passed. First argument is count
// of numbers.
int min(int arg_count, ...)
{
int i;
int min, a;
2| Institute of Professional Computer Programming & Designing, Contact 95027 83007
Indian Bank Road, Veerabhdra Swamy temple Backside, Bhimavaram - 1, W. G Dist., A.P.
Vikram Computer Institute Storage Classes in C
LEARN HOW TO THINK & THINK HOW TO DEVELOP

// va_list is a type to hold information about


// variable arguments
va_list ap;

// va_start must be called before accessing


// variable argument list
va_start(ap, arg_count);

// Now arguments can be accessed one by one


// using va_arg macro. Initialize min as first
// argument in list
min = va_arg(ap, int);

// traverse rest of the arguments to find out minimum


for (i = 2; i <= arg_count; i++)
if ((a = va_arg(ap, int)) < min)
min = a;

// va_end should be executed before the function


// returns whenever va_start has been previously
// used in that function
va_end(ap);

return min;
3| Institute of Professional Computer Programming & Designing, Contact 95027 83007
Indian Bank Road, Veerabhdra Swamy temple Backside, Bhimavaram - 1, W. G Dist., A.P.
Vikram Computer Institute Storage Classes in C
LEARN HOW TO THINK & THINK HOW TO DEVELOP

// Driver code
int main()
{
int count = 5;
printf("Minimum value is %d", min(count, 12, 67, 6, 7, 100));
return 0;
}

4| Institute of Professional Computer Programming & Designing, Contact 95027 83007


Indian Bank Road, Veerabhdra Swamy temple Backside, Bhimavaram - 1, W. G Dist., A.P.

You might also like