之前看了很多博客,感觉多少还是有点云里雾里。
在C语言中文网看到的这篇博客讲解十分清晰(由于联系不到原作者,故侵权请联系博主删除):
C语言中文网:C语言可变参数函数
以下内容为原创
看过之后自己写了一段代码实现(编译环境为VS2017):
#include <stdio.h>
void My_va(int S_num,int num,...) //S_num为学号,num固定,作为科目数;后面的是学生的各次考试成绩,目的是计算其平均成绩
{
int i, grade = 0, Sum = 0;
//初始化部分
va_list arg; //定义第一个可选参数
__crt_va_start(arg,num); // va_start 使用第一个可选参数的位置来初始化参数指针。第二个参数必须是该函数最后一个有名称参数
for (i = 0; i < num; i++)
{
Sum += __crt_va_arg(arg, int); //对每个可选参数,读取类型为int的参数
}
__crt_va_end(arg); //当不再需要使用参数指针时,必须调用 va_end 释放
grade = Sum / num;
printf("学号 %d 的同学 %d 次考试的平均成绩为 %d \n", S_num, num, grade);
}
int main(void)
{
My_va(20, 3, 88, 85, 90);
My_va(24, 5, 78, 77, 90, 86, 88);
}
运行结果如下:

本文详细介绍了C语言中如何使用可变参数列表来创建函数,以便处理不同数量的参数。通过C语言中文网的一篇博客,学习了如何定义和使用`va_list`、`va_start`、`va_arg`和`va_end`宏来处理可变参数。作者给出了一个实际的代码示例,展示了如何利用这些宏计算一组整数的平均值。在Visual Studio 2017环境下编译并运行此代码,成功实现了计算学生考试平均成绩的功能。
998

被折叠的 条评论
为什么被折叠?



