可变参数列表

#include<stdio.h>
#line 10 "string"
float average(int n_values,int v1,int v2,int v3,int v4,int v5);
float average(int n_values,int v1,int v2,int v3,int v4,int v5)
{
float sum = v1;
if(n_values>=2)
sum+=v2;
if(n_values>=3)
sum+=v3;
if(n_values>=4)
sum+=v4;
if(n_values>=5)
sum+=v5;
return sum/n_values;
}
int main()
{
average(2,3,4);
return 0;
}

1 stdarg宏

#include<stdio.h>
#include<stdarg.h>
float average(int n_values,...);
float average(int n_values,...)
{
va_list var_arg;
int count;
float sum = 0;
va_start(var_arg,n_values);
for(count=0;count<n_values;count++)
{
sum+=va_arg(var_arg,int);
}
va_end(var_arg);
return sum/n_values;
}
int main()
{
float result = average(2,3,4);
printf("average:%f",result);
return 0;
}

2 可变参数的限制


