Variadic functions in C

  • + 0 comments
    int sum (int count,...) {
        // initialize 
        //  1. va_list args;
        //  2. va_start(args, count);   pass in the number of the arguments.
        va_list args;
        va_start(args, count);
        int res = 0;
        for (int i = 0; i<count; i++){
            res += va_arg(args, int);
        }
        va_end(args);
        return res;
    }
    
    int min(int count,...) {
        va_list args;
        va_start(args, count);
        int min_int = va_arg(args, int);
        for (int i = 1; i<count; i++){
            int temp = va_arg(args, int);
            if (temp < min_int){
                min_int = temp;
            }
        }
        va_end(args);
        return min_int;
    }
    
    int max(int count,...) {
        va_list args;
        va_start(args, count);
        int max_int = va_arg(args, int);
        for (int i = 1; i<count; i++){
            int temp = va_arg(args, int);
            if (temp > max_int){
                max_int = temp;
            }
        }
        va_end(args);
        return max_int;
    }