Z K*_*Kim 9 c function variadic-functions
如何编写(如果可能的话......)一个在C99中获取未知数量参数的函数(返回类型是常量)?
jbx*_*jbx 22
是的,您可以使用所谓的Variadic函数在C中完成.例如,标准printf()和scanf()功能就是这样做的.
将省略号(三个点)作为您想要'可变参数个数的最后一个参数.
要访问参数,请包括<stdarg.h>标题:
#include <stdarg.h>
Run Code Online (Sandbox Code Playgroud)
然后你有一个特殊的类型va_list,让你传递的参数列表,你可以使用va_start,va_arg而va_end宏通过参数列表进行迭代.
例如:
#include <stdarg.h>
int myfunc(int count, ...)
{
va_list list;
int j = 0;
va_start(list, count);
for(j=0; j<count; j++)
{
printf("%d", va_arg(list, int));
}
va_end(list);
return count;
}
Run Code Online (Sandbox Code Playgroud)
示例电话:
myfunc(4, -9, 12, 43, 217);
Run Code Online (Sandbox Code Playgroud)
可以在维基百科上找到完整的示例.
count示例中的参数告诉被调用函数传递了多少个参数.在printf()和scanf()发现了通过格式字符串,但一个简单的count参数可以做到这一点.有时,代码使用sentinel值,例如负整数或空指针(execl()
例如,参见
参考资料).
| 归档时间: |
|
| 查看次数: |
21007 次 |
| 最近记录: |