passing variable number of arguments

后端 未结 5 1269
野性不改
野性不改 2020-12-07 01:31

Can we pass variable number of arguments to a function in c?

相关标签:
5条回答
  • 2020-12-07 01:47

    Yes, if the function accepts variable arguments. If you need to make your own variable-argument function, there are macros that begin with va_ which give you access to the arguments.

    0 讨论(0)
  • 2020-12-07 02:02

    make sure that the variable argument list should always be at the end of the argument list

    example: void func(float a, int b, ...) is correct

    but void func(float a, ..., int b) is not valid

    0 讨论(0)
  • 2020-12-07 02:04

    Here is an example:

    #include <stdlib.h>
    #include <stdarg.h>
    #include <stdio.h>
    
    int maxof(int, ...) ;
    void f(void);
    
    int main(void){
            f();
            exit(EXIT SUCCESS);
    }
    
    int maxof(int n_args, ...){
            register int i;
            int max, a;
            va_list ap;
    
            va_start(ap, n_args);
            max = va_arg(ap, int);
            for(i = 2; i <= n_args; i++) {
                    if((a = va_arg(ap, int)) > max)
                            max = a;
            }
    
            va_end(ap);
            return max;
    }
    
    void f(void) {
            int i = 5;
            int j[256];
            j[42] = 24;
            printf("%d\n", maxof(3, i, j[42], 0));
    }
    
    0 讨论(0)
  • 2020-12-07 02:07

    "You should consider that using variadic functions (C-style) is a dangerous flaw," says Stephane Rolland. You can find his helpful post here.

    0 讨论(0)
  • 2020-12-07 02:09

    If it is a function that accepts a variable number of arguments, yes.

    0 讨论(0)
提交回复
热议问题