计算标量参数的平均值

      要计算一系列值的平均值,我们假定它们并不存储于数组中,试图用可变参数列表完成这个任务。

       可变参数要实现必须得保证参数列表中至少有一个参数,否则无法使用va_list可变参数的实现过程: 形参实例化时给形参变量分配的地址是连续的,而且实例化时是从最右边的变量开始分配地址的,由于形参变量是分配在栈区,故第一个参数的地址是最小的,而由于给定了第一个参数,因此可以通过地址访问其他的形参变量。

/*
**计算指定数量的值的平均值
*/

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

float
average(int n_value, ...) {
	va_list var_arg;
	int count;
	float sum = 0;
	
	/*
	**准备访问可变参数。
	*/
	va_start(var_arg, n_value);
	
	/*
	**添加取自可变参数列表的值。
	*/
	for (count = 0; count < n_value; count += 1) {
		sum += va_arg(var_arg, int);
	}

	/*
	**完成处理可变参数。
	*/
	va_end(var_arg);
	return sum / n_value;
}

int 
main() {
	float sum = 0.0;
	sum = average(5, 99, 97, 99, 44, 66);
	printf("%f", sum);
	return 0;
}
本程序在VS2017下运行通过。

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/80223976