C中参数数量未知的函数

如何编写(如果可能的话……)一个在C99中采用未知数量参数的函数(返回类型是常量)?

是的,您可以使用所谓的Variadic函数在C中执行此操作。 例如,标准的printf()scanf()函数就是这样做的。

将省略号(三个点)作为您想要’可变参数个数的最后一个参数。

要访问参数,请包含标头:

 #include  

然后你有一个特殊的类型va_list ,它给你传递的参数列表,你可以使用va_startva_argva_end宏遍历参数列表。

例如:

 #include  int myfunc(int count, ...) { va_list list; int j = 0; va_start(list, count); for(j=0; j 

示例电话:

 myfunc(4, -9, 12, 43, 217); 

可以在维基百科上找到完整的示例。

示例中的count参数告诉被调用函数传递了多少个参数。 printf()scanf()通过格式字符串找到它,但是一个简单的count参数也可以这样做。 有时,代码使用sentinel值,例如负整数或空指针(例如,参见execl() )。

现有示例的格式:

 int yourFunc ( int abc, ... ) { //your code here }