C语言 - 可变参数

首页 / C语言 / C语言 - 可变参数

有时,当您想要一个函数时,可能会遇到一种情况,该函数可以采用可变数量的参数,而不是预定义数量的参数。 C编程语言为这种情况提供了一种解决方案,并且您可以根据自己的要求定义一个可以接受可变数量参数的函数。以下示例显示了此类函数的定义。

int func(int, ... ) {
   .
   .
   .
}

int main() {
   func(1, 2, 3);
   func(1, 2, 3, 4);
}

应该注意的是,函数 func()的最后一个参数为椭圆,即三个点( ... ),而椭圆之前的那个始终是 int ,它表示传递的变量参数总数。

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/c-programming/c-variable-arguments.html

来源:LearnFk无涯教程网

示例下一个简单的函数,该函数可以获取可变数量的参数并返回其平均值-

#include <stdio.h>
#include <stdarg.h>

double average(int num,...) {

   va_list valist;
   double sum=0.0;
   int i;

   /* 为 num 个参数初始化 valist */
   va_start(valist, num);

   /* 访问分配给 valist 的所有参数 */
   for (i=0; i < num; i++) {
      sum += va_arg(valist, int);
   }
	
   /* 为 valist 保留的干净内存 */
   va_end(valist);

   return sum/num;
}

int main() {
   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()已被调用两次,并且每次第一个参数代表要传递的可变参数的总数。

Average of 2, 3, 4, 5=3.500000
Average of 5, 10, 15=10.000000

这一章《C语言 - 可变参数》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持,感谢!😊

好记忆不如烂笔头。留下你的足迹吧 :)

相关文章

面试现场 -〔白海飞 - 〕

代码之丑 -〔郑晔 - 〕

操作系统实战45讲 -〔彭东 - 〕

人人都用得上的数字化思维课 -〔付晓岩 - 〕

为什么 malloc() 被认为是库调用而不是系统调用?

幂函数给出的答案与 C 中的 math.pow 函数不同

在 C 中使用数组而不是向量

判断由大括号组成的输入字符串是否格式正确

在编译时构建静态数组

确定在嵌入式 C 中运行时使用哪个变量

视频推荐〔4.初识C语言(3)(C语言程序设计教程谭浩强 c语言谭浩强视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语〕

更多 C-variable-arguments 视频教程 »