变长参数
#include<stdarg.h> //变长参数所需头文件
va_list v; //定义一个可变长参数的列表
va_start(v,cnt); //将所有的参数保存到va_list中,并把参数个记录在cnt中;cnt是接收函数的第一形参
变量=va_arg(v,数据类型); //从va_list中取出第一个参数赋值给变量,变量的数据类型必须和参数的数据类型一致
va_end(v); //释放可变长参数列表
-------------------------实例
#include<stdio.h>
#include<stdarg.h>
int max(int cnt,...);
int main()
{
printf("%d
",max(3,15,24,18));
printf("%d
",max(5,15,51,18,23,16));
printf("%d
",max(10,15,24,18,52,123,14,57,48,62,31));
return 0;
}
int max(int cnt,...) // '...' 代表可变数目形参列表,也就是说调用该函数的时候可以传递不定数目的实参
{
va_list v; //声明一个va_list类型的变量,用来保存参数
va_start(v,cnt); //va_list指向第二个参数,并且参数的个数被cnt记录(cnt可以记录最后一个参数的位数)
int i;
int maxvalue=va_arg(v,int); //从va_list中取出第一个参数赋值给maxvalue
for(i=1; i<cnt; i++)
{
int data =va_arg(v,int); //从va_list中取出一个参数赋值给data,int是说明参数的数据类型
if(data>maxvalue) //进行判断
maxvalue = data;
}
va_end(v); //.释放va_list
return maxvalue; //返回一个值给max函数
}
说明:该函数作用是求最大值,所以要把最大值(比较的结果)返回给调用处