高质量的网站建设,天一建设网站,徐州如何选择网站建设,泸州中泸建设集团有限公司网站用过printf()函数的热都知道#xff0c;printf的参数可以有多个#xff0c;它是可变的#xff0c;根据我们输出参数的类型以及个数的不同来确定参数。今天来学习C语言中参数可变的函数是如何实现的。 文章目录1 可变参数2 总结1 可变参数
首先我们要明白一点#xff0c;在… 用过printf()函数的热都知道printf的参数可以有多个它是可变的根据我们输出参数的类型以及个数的不同来确定参数。今天来学习C语言中参数可变的函数是如何实现的。 文章目录1 可变参数2 总结 1 可变参数
首先我们要明白一点在C语言中参数可变的函数的实现要依赖于头文件stdarg.h。所以在实现这样的函数的时候需要包含该头文件。
其次实现函数可变参数需要使用以下几个类型参数我们需要熟练掌握它们的使用下面先看看这些参数是什么
va_list参数集合va_arg取具体参数值va_start标识参数访问的开始va_end标识参数访问的结束
看了上面的参数的意义还是不知道什么是什么。下面看一个例子就能彻底明白了。
下面函数的意思是求n个数的平均值。这n个数直接作为参数传递给函数这么写肯定是效率不高这里只是为了学习使用
45-2.c
#include stdio.h
#include stdarg.hfloat average(int n, ...){ //这个n代表参数的个数后面的...代表后面的参数不确定是什么va_list args; // args代表函数可变参数的集合int i 0;float sum 0;va_start(args, n); // 如果要遍历args参数的话则从args参数集合的开始遍历n次结束for(i0; in; i){sumva_arg(args, int); // 开始遍历取具体参数值类型为int}va_end(args); // 代表参数集合args访问结束return sum/n;
}int main(){printf(%f\n, average(5,1,2,3,4,5));printf(%f\n, average(4,1,2,3,4));return 0;
}上述代码编译运行结果为 上面代码不难主要是学会使用那几个参数的使用。我们需要注意以下几点
可变参数必须从头到尾按照顺序逐个访问参数列表中至少要存在一个确定的命名参数可变参数函数无法确定实际的参数的数量需要在运行的时候根据具体的传参结果来计算可变参数函数无法确定参数的实际类型
注意如果va_arg中指定的参数的类型与实际的不匹配那么最终的计算结果将是不可预测的。
2 总结
学会定义可变参数的函数。主要是使用方法。