可变参数函数
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[][].