我如何编写(如果可能的话......)一个在 C99 中采用未知数量参数的函数(返回类型是常量)?
			
			31245 次
		
1 回答
            36        
        
		
是的,您可以在 C 中使用所谓的可变参数函数来实现。例如,标准printf()和scanf()函数就是这样做的。
将省略号(三个点)作为最后一个参数,您希望参数数量可变。
要访问参数,请包括<stdarg.h>标题:
#include <stdarg.h>
然后你有一个特殊的类型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;
}
示例调用:
myfunc(4, -9, 12, 43, 217);
一个完整的例子可以在Wikipedia上找到。
示例中的count参数告诉被调用函数传递了多少参数。并通过格式字符串找到它,但一个简单的printf()参数也可以做到这一点。有时,代码使用标记值,例如负整数或空指针(参见 
示例)。scanf()countexecl()
于 2012-04-09T09:19:28.943   回答