gpt4 book ai didi

C - 带有可变参数的函数

转载 作者:行者123 更新时间:2023-12-02 16:00:53 25 4
gpt4 key购买 nike

我想制作一个可以同时接受可变数量参数的函数来做这样的事情:

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 CReference .


提示:Think twice before using Variadic functions .正如@user694733 评论的那样,它们没有编译时类型安全性或针对无效参数数量的保护。通常可以通过更好的程序设计来避免它们。

关于C - 带有可变参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70741013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com