可变参数函数:
可变参数函数应至少有一个参数!
原理:根据函数在参数实例化时,参数在栈中存储的特征。依据第一个参数去访问其他的参数。
列:头文件#include<stdarg.h>
add(3,1,2,3);
int add(int n,…)
主要利用的宏:
va_list arg;//定义一个va_list类型变量(指针类型),变量名arg
va_start(arg,n);//初始化arg,让arg指向第一个未知参数
va_arg(arg,int);//提取参数和类型,提取后arg自动指向下一个参数。
va_end(arg);//释放指针空间
代码示例:
//2.使用可变参数函数求最大值,求函数参数的平均值。
#include<stdio.h>
#include<stdarg.h>//可变参数头文件
#include<stdlib.h>
#include<assert.h>
int averge(int count,...);//计算n个数值平均值
int Max_num(int count,...);//求最大值
int main()
{
int add=0;
int max_num=0;
add=averge(3,1,2,3);
printf("结果为:%d\n",add);
max_num=Max_num(6,6,5,9,4,1,8);
printf("最大数:%d\n",max_num);
system("pause");
return 0;
}
int averge(int count,...)//计算n个数值平均值
{
int i=0;
int num=0;
va_list arg;
assert(count);//判空
va_start(arg,count);//初始化arg,既让arg指向第一个参数(非数值个数参数),个数不提取
for(i=0;i<