可变参数通过将函数实现为可变参数的形式,可以使得函数接受一个或者多个参数。
以下列可以求任意个数平均值展开分析:
.
结果为3.
对va_arg(arg,int)具体分析;
注:声明一个va_list类型的变量arg,为char *类型
va_start()是用来初始化可变参数部分,第一个参数是va_list变量名,第二个参数是省略号前最后一个有名字的参数,初始化过程把arg设置为可变参数部分的第一个参数。
为了访问参数,需要使用va_arg,这个宏接受两个参数,第一个参数是va_list变量,第二个参数是参数列表中下一个参数的类型。
最后,当访问完最后一个参数时,调用va_end。
va_start() ,va_arg(), va_end是宏
可变参数的限制:
可变参数必须从头开始访问。可以半途终止,但不可一开始就访问参数列表中间的参数。
参数列表中至少有一个命名参数,否则无法使用va_start,即无法找到arg的位置。
这些宏无法判断实际存在参数的数量和每个参数的类型。
如果在va_arg中指定错误的类型,后果不可预测。