我们可以将可变数量的参数传递给c中的函数吗?
问问题
1084 次
5 回答
11
这是一个例子:
#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));
}
于 2010-10-01T03:07:07.873 回答
6
如果它是一个接受可变数量参数的函数,是的。
于 2010-10-01T03:03:21.660 回答
0
确保变量参数列表应始终位于参数列表的末尾
例子:void func(float a, int b, ...)
是正确的
但void func(float a, ..., int b)
无效
于 2010-10-01T05:58:59.490 回答
0
“你应该考虑到使用可变参数函数(C 风格)是一个危险的缺陷,”Stephane Rolland 说。你可以在这里找到他有用的帖子。
于 2011-11-27T04:44:42.247 回答
0
是的,如果函数接受可变参数。如果您需要创建自己的变量参数函数,可以使用以 va_ 开头的宏来访问参数。
于 2010-10-01T03:05:22.387 回答