C:编写一个函数';我不知道有多少个参数

C:编写一个函数';我不知道有多少个参数,c,parameters,variadic-functions,C,Parameters,Variadic Functions,在学习C时,我看到printf在传递时可以接收许多参数 我不知道C如何实现这样一个函数,用户可以根据需要输入任意多的参数。我也想过指针,但仍然没有什么好主意。如果有人对这种类型的函数有任何想法,请告诉我。您必须使用函数声明中的..符号作为最后一个参数 请参阅本教程了解更多信息:您需要使用va_参数、va_列表等。 请看一下本教程。 这应该很有帮助。您可以使用Cvarargs编写一个可变函数。您需要包括stdargs.h,它为您提供了用于在未知大小的参数列表上迭代的宏:va_start、va_a

在学习C时,我看到
printf
在传递时可以接收许多参数


我不知道C如何实现这样一个函数,用户可以根据需要输入任意多的参数。我也想过指针,但仍然没有什么好主意。如果有人对这种类型的函数有任何想法,请告诉我。

您必须使用函数声明中的
..
符号作为最后一个参数


请参阅本教程了解更多信息:

您需要使用va_参数、va_列表等。 请看一下本教程。


这应该很有帮助。

您可以使用C
varargs
编写一个可变函数。您需要包括
stdargs.h
,它为您提供了用于在未知大小的参数列表上迭代的宏:
va_start
va_arg
va_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");
一个更有趣的示例演示了可以多次迭代参数列表

请注意,使用此功能存在类型安全问题;其中一些地址。

#包括
#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));
}
#包括 int add_all(int num,…) { va_列表参数; 整数和=0; va_开始(args,num); int x=0; 对于(x=0;x
这是正确答案。请注意有关缺少变量参数类型检查的警告。可能存在重复的