传递可变数量的参数

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

这是一个例子:

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

如果它是一个接受可变数量参数的函数 ,是的。

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

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

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

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

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