学习 C 语言时,我发现
printf
函数可以接收多个参数。但是,我不知道 C 怎么实现这种用户可以自由输入参数数量的函数。我曾经考虑过使用指针,但是还没有明确的想法。如果有人对这种函数有什么想法,请告诉我。printf
函数可以接收多个参数。但是,我不知道 C 怎么实现这种用户可以自由输入参数数量的函数。我曾经考虑过使用指针,但是还没有明确的想法。如果有人对这种函数有什么想法,请告诉我。在函数声明中,您必须使用...
符号作为最后一个参数。
请查看此教程以了解更多信息:http://www.cprogramming.com/tutorial/c/lesson17.html
varargs
来编写一个 可变参数函数。您需要包含 stdarg.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));
}