我们可以将可变数量的参数传递给c中的函数吗?传递可变数量的参数
回答
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例如....我喜欢的例子... – Matthieu 2010-10-01 03:47:01
我没有得到在这里使用'寄存器'? – haroldcampbell 2011-12-09 21:25:36
“注册”的使用证明代码示例非常陈旧。作为性能优化,使用register是向编译器提示将变量放入机器寄存器的提示。过去30年来大多数C编译器都忽略了这个提示,因为它们可以比大多数程序员做得更好。现在,除了禁止计算变量的地址外,“寄存器”的影响很小。 – Peter 2017-07-21 13:44:15
是的,如果函数接受可变参数。如果您需要创建自己的变量参数函数,则以va_开头的宏可让您访问参数。
不完全错误,但不是很有帮助。 – 2017-07-21 13:32:33
确保变量参数列表应该总是在参数列表的末尾
例如:void func(float a, int b, ...)
是正确的
但void func(float a, ..., int b)
不有效
是的,但这不仅仅是一个回答的评论。当然,你已经解释了一个方面,但这是答案的一个非常小的方面。 – 2017-07-21 13:33:51
“您应该考虑使用可变参数函数(C风格)是一个危险的缺陷,“Stephane Rolland说。你可以找到他有用的帖子here。
我相信这些建议是用C++编写自己的自定义可变参数函数,而不是用标准库提供的。只是,想象没有'printf'的生活! – 2011-11-27 04:50:01
- 1. .Net - 传递可变数量的参数
- 2. 可以将可变数量的参数传递给函数吗?
- 3. 传递变量参数的函数
- 4. 从Python的传递可变数量参数的个数到mysql
- 5. Spark Java:将可变数量的参数传递给函数
- 6. 如何可变数量的参数传递给函数在PHP
- 7. 如何将可变数量的参数传递给sprintf()函数?
- 8. 传递可变数量的参数特征 - 函数重载?
- 9. 通过函数参数传递变量
- 10. 如何将可变数量的参数“传递”到NSString的+ stringWithFormat:
- 11. C - 将可变数量的命令行参数传递给具有可变数量参数的方法
- 12. 将可变参数传递到数组
- 13. 传递变量的可变长度的参数列表在PHP
- 14. PHP - 通过引用传递可变数量的参数
- 15. 将可变数量的参数传递给存储过程
- 16. 将可变数量的参数传递给选择器
- 17. 如何将可变数量的参数传递给Web服务
- 18. 如何将可变数量的参数传递给LLVM opt pass?
- 19. 传递变量参数的jQuery
- 20. 不能传递变量参数以嵌套的可变参数模板电话
- 21. Terraform - 将变量传递给“Source”参数
- 22. Laravel - 传递参数/未定义变量
- 23. 参数传递与变量声明
- 24. (VB)传递变量报表参数
- 25. Xtext传递参数到变量
- 26. 将形式变量传递给参数
- 27. MDX,如何传递变量/参数? SSAS?
- 28. PHP:传递php变量作为参数?
- 29. 将变量作为参数传递
- 30. 传递变量参数makecontext功能
这样的函数称为[variadic函数](http://www.gnu.org/s/libc/manual/html_node/Variadic-Functions.html)(对于那些寻求好搜索关键字的人)。 – Seth 2010-10-01 03:11:45
Thanks.It帮助我 – Shweta 2010-10-01 03:52:48
你有没有使用'printf'? – dan04 2010-10-01 06:00:46