参数个数可变的函数
l 定义参数个数可变的函数
l stdarg.h头文件
l va_list类型
l va_start(parg,i1);
l va_arg(parg,int)
一、定义参数可变的函数
#include<stdarg.h>
返回类型 函数名(参数类型1 固定参数名1,参数类型2固定参数名2,...);
例: int func(int i,int j,int k,...)
int func(int i,...)
二、获取参数
va_list parg; //定义parg指针
va_start(parg,i); //初始化parg指针
va_arg(parg,int); //获取参数
三、实例
求和函数:
addnum(1,2,3,4,5,6,0)
addnum(1,2,3,4,5,6,10,0)
addnum(1,2,3,4,5,6,10,3,5,0)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stdarg.h> int addnum(int i,...) { va_list parg; int num=i;//存放和 int v=i; printf("%d",i); va_start(parg,i); v=va_arg(parg,int);//取i后边一个参数 while(v!=0) { printf("+%d",v); num=num+v; v=va_arg(parg,int);// } va_end(parg); return num; } main(void) { printf("=%d ",addnum(1,2,3,4,5,6,7,8,0)); getchar(); getchar(); return 0; }
1+2+3+4+5+6+7+8=36
main函数及命令行参数
l main函数
l int main(int argc,int* argc[])
一、main函数常见的2种形式
void main(void)
int main(int argc,int* argc[])
二、获取参数
argc表示参数列表内有几个参数
argv[0] 表示进程完整路径
三、获取整型参数
atoi(argv[i]) ;
四、#include <Windows.h>
GetCommandLineA
操作系统提供的接口函数
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stdarg.h> #include <Windows.h> int main(int argn,char* argv[])// int a[1]//a[0] { int i; printf("%d ",argn); printf("%s",argv[0]); for (i=1;i<argn;i++) { printf(" %d",atoi(argv[i])); } printf(" %s",GetCommandLineA()); getchar(); getchar(); return 0; }
1 d:documentsvisual studio 2010ProjectsSolution1Debuglianxiccc.exe "d:documentsvisual studio 2010ProjectsSolution1Debuglianxiccc.exe"
在xx.exe中添加参数: 点击快捷方式 -> 属性->目标->在目标路径后面添加参数,用空格隔开