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

4
学习 C 语言时,我发现 printf 函数可以接收多个参数。但是,我不知道 C 怎么实现这种用户可以自由输入参数数量的函数。我曾经考虑过使用指针,但是还没有明确的想法。如果有人对这种函数有什么想法,请告诉我。

可能是传递可变数量的参数的重复问题。 - Prof. Falken
4个回答

4

这是正确的答案。只需注意有关变量参数缺乏类型检查的警告即可。 - Ian Goldby

4

3
您可以使用 C 的 varargs 来编写一个 可变参数函数。您需要包含 stdarg.h,这会为您提供用于迭代未知大小的参数列表的宏:va_startva_argva_end,并使用数据类型:va_list

下面是一个几乎没什么用处的函数,它打印出它的可变长度参数列表:

void printArgs(const char *arg1, ...)
{
    va_list args;
    char *str;

    if (arg1) We

        va_start(args, arg1);

        printf("%s ", arg1);

        while ((str = va_arg(argp, char *)) != NULL)
            printf("%s ", str);

        va_end(args);
    }
}

...

printArgs("print", "any", "number", "of", "arguments");

这里有一个更有趣的例子,演示了您可以多次迭代参数列表。

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


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));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接