可变参数函数

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[][].

posted @ 2012-06-02 17:41  always on the way  阅读(255)  评论(0编辑  收藏  举报