C语言可变参数

之前看了很多博客,感觉多少还是有点云里雾里。
在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);
}

运行结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值