可变参数通过将函数实现为可变参数的形式,可以使得函数接受一个或者多个参数。

以下列可以求任意个数平均值展开分析:

可变参数列表.

结果为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中指定错误的类型,后果不可预测。



相关文章: