Apply for Zend Framework Certification Training

c




< Bit Fields in C Memory Optimization Last >



 
In C, Variable Argument Lists allow a function to accept a variable number of arguments using the header file \<stdarg.h>.
 
Steps to Use <stdarg.h>
Include the header:
#include <stdarg.h>
Use these macros:
va_list → declares argument list
va_start() → initializes list
va_arg() → accesses arguments
va_end() → cleans up
 
2. Variable Argument Lists (<stdarg.h>)
Definition
Variable argument functions allow a function to accept different number of arguments.
Example: printf()
Required Header
#include <stdarg.h>
Important Macros
Macro Purpose
va_list Declare variable
va_start() Initialize list
va_arg() Access next argument
va_end() Clean up
Syntax
return_type function_name(int fixed_arg, ...) {
    va_list args;
    va_start(args, fixed_arg);
    // Access arguments
    va_arg(args, type);
    va_end(args);
}
Example 1): Sum of Numbers
#include <stdio.h>
#include <stdarg.h>
int sum(int count,...){
    int total = 0;
    va_list arguments;
    va_start(arguments,count);
    for(int i=0;i<count;i++){
        total += va_arg(arguments,int);
 
    }
    va_end(arguments);
    return total;
}
int main(){
    printf("Sum of = %d \n",sum(3,10,20,30,40,50));
    return 0;
}
Output
Sum = 60
 
Example 2): Find Maximum Number
#include <stdio.h>
#include <stdarg.h>
 
int maximum(int count, ...){
    va_list args;
    va_start(args, count);
    int max = va_arg(args, int);
    for(int i = 1; i < count; i++){
        int num = va_arg(args, int);
        if(num > max)
            max = num;
    }
    va_end(args);
    return max;
}
 
int main(){
    printf("Maximum = %d\n", maximum(5, 12, 45, 7, 89, 23));
    return 0;
}
 
Output
Maximum = 89
 
Example 3: Average of Numbers
#include <stdio.h>
#include <stdarg.h>
 
float average(int count, ...){
    va_list args;
    int sum = 0;
    va_start(args, count);
    for(int i = 0; i < count; i++){
        sum += va_arg(args, int);
    }
    va_end(args);
    return (float)sum / count;
}
 
int main(){
    printf("Average = %.2f\n", average(4, 10, 20, 30, 40));
    return 0;
}
Output
Average = 25.00
 
Example 4: Print Strings
#include <stdio.h>
#include <stdarg.h>
void printStrings(int count, ...){
    va_list args;
    va_start(args, count);
    for(int i = 0; i < count; i++){
        char *str = va_arg(args, char*);
        printf("%s\n", str);
    }
    va_end(args);
}
int main(){
    printStrings(3, "Apple", "Banana", "Mango");
    return 0;
}
 
Output
Apple
Banana
Mango

< Bit Fields in C Memory Optimization Last >



Ask a question



  • Question:
    {{questionlistdata.blog_question_description}}
    • Answer:
      {{answer.blog_answer_description  }}
    Replay to Question


Back to Top