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