传递可变数量的参数
我们可以将可变数量的参数传递给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。