可变参数函数
1、可变参数函数,见下面程序及注释
#include <stdio.h>
#include <stdarg.h>
//可变参数函数
int max(int n,...)
{
va_list paras; //宏va_list通常定义为char指针类型,用它来实现记录函数的参数列表,通常它初始会指向起始参数的地址
//char * paras; //不用宏定义实现
int max=0;
int temp=0;
va_start(paras,n); //宏va_start用来得到第一个可变参数的地址
//paras=(char *)&n + sizeof(n); //不用宏定义实现
while(n-->0)
{
temp=va_arg(paras,int); //宏va_arg返回参数列表中的当前参数并指向参数列表的下一个参数
//temp=*(int *)(paras+(i++)*sizeof(n)); //不用宏定义实现
max=(max>temp)?max:temp;
}
va_end(paras); //宏va_end把参数列表指针清为NULL
//paras=NULL; //不用宏定义实现
return max;
}
int main()
{
int m;
m=max(5,8,12,4,9,10);
printf("m=%d\n",m);
m=max(3,8,-9,1);
printf("m=%d\n",m);
return 0;
}
2、main()函数命令行参数
int main(int argc,char *argv[]) {}
第一个形参argc必须是整数形,用来记录从外界输入给main()函数参数的个数(包括执行文件本身);
第二个形参argv必须是指向字符串的指针数组,对于数组类型char *argv[]可以等价为char **argv或char argv[][].
浙公网安备 33010602011771号