我想制作一个可以同时接受可变数量参数的函数来做这样的事情:
void function(char *args[]){ ... }
int main(){
function("a","b","c");
}
最佳答案
您正在寻找可变函数。
检查这个例子:
#include <stdio.h>
#include <stdarg.h>
double average(int num, ...) {
va_list valist;
double sum = 0.0;
int i;
/* initialize valist for num number of arguments */
va_start(valist, num);
/* access all the arguments assigned to valist */
for (i = 0; i < num; i++) {
sum += va_arg(valist, int);
}
/* clean memory reserved for valist */
va_end(valist);
return sum/num;
}
int main(void) {
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2, 3, 4, 5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5, 10, 15));
}
输出:
Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000
阅读更多 Variadic Functions in C和 Reference .
提示:Think twice before using Variadic functions .正如@user694733 评论的那样,它们没有编译时类型安全性或针对无效参数数量的保护。通常可以通过更好的程序设计来避免它们。
关于C - 带有可变参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70741013/