【问题标题】:Function with unknown number of parameters in CC中参数数量未知的函数
【发布时间】:2012-04-09 09:14:14
【问题描述】:

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

【问题讨论】:

标签: c function variadic-functions


【解决方案1】:

是的,您可以在 C 中使用所谓的可变参数函数来实现。 例如,标准的 printf()scanf() 函数就是这样做的。

将省略号(三个点)作为您希望“可变参数数量”的最后一个参数。

要访问参数,请包含<stdarg.h> 标头:

#include <stdarg.h>

然后你有一个特殊的类型va_list,它给你传递的参数列表,你可以使用va_startva_argva_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() 通过格式字符串找到它,但一个简单的 count 参数也可以做到这一点。有时,代码使用标记值,例如负整数或空指针(参见 execl() 例如)。

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多