C:写一个函数不知道有多少参数

时间:2012-07-02 07:27:04

标签: c parameters variadic-functions

学习C时,我发现printf在传递时会收到很多参数。

我不知道C如何实现这样的功能,用户可以根据需要输入多个参数。我也考虑了指针,但仍然没有明智的想法。如果有人对这类功能有任何想法,请告诉我。

4 个答案:

答案 0 :(得分:4)

您必须在函数声明中使用...表示法作为最后一个参数。

请参阅本教程以了解详情:http://www.cprogramming.com/tutorial/c/lesson17.html

答案 1 :(得分:4)

您需要使用va_args,va_list等。 看看这个教程。     http://www.cprogramming.com/tutorial/c/lesson17.html

这应该会有所帮助。

答案 2 :(得分:3)

您使用C varargs编写可变参数函数。您需要包含stdargs.h,它使用数据类型为您提供宏来迭代未知大小的参数列表:va_startva_argva_end:{ {1}}。

这是一个无用的函数,它打印出它的可变长度参数列表:

va_list

Here's一个更有趣的例子,证明你可以多次迭代参数列表。

请注意,使用此功能存在类型安全问题; wiki article解决了其中一些问题。

答案 3 :(得分:3)

#include <stdarg.h>
#include <stdio.h>

int add_all(int num,...)
{
    va_list args;
    int sum = 0;
    va_start(args,num);
    int x = 0;
    for(x = 0; x < num;x++)
        sum += va_arg(args,int);
    va_end(args);
    return sum;
}

int main()
{
    printf("Added 2 + 5 + 3: %d\n",add_all(3,2,5,3));
}