传递可变数量的参数

时间:2010-10-01 03:01:32

标签: c function variadic-functions variadic

我们可以将可变数量的参数传递给c?

中的函数

5 个答案:

答案 0 :(得分:11)

Here就是一个例子:

#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));
}

答案 1 :(得分:6)

答案 2 :(得分:0)

是的,如果函数接受变量参数。如果你需要创建自己的变量参数函数,那么有些以va_开头的宏可以让你访问参数。

答案 3 :(得分:0)

确保变量参数列表应始终位于参数列表的末尾

示例:void func(float a, int b, ...)是正确的

void func(float a, ..., int b)无效

答案 4 :(得分:0)

“你应该考虑使用可变函数(C风格)是一个危险的缺陷,”Stephane Rolland说。你可以找到他有用的帖子here