C语言参数个数可变函数浅析VA函数(variableargumentfunction),参数个数可变函数,又称可变参数函数
C/C++编程中,系统提供给编程人员的va函数很少
*printf()/*scanf()系列函数,用于输入输出时格式化字符串;exec*()系列函数,用于在程序中执行外部文件(main(intargc,char*argv[])算不算呢,与其说main()也是一个可变参数函数,倒不如说它是exec*()经过封装后的具备特殊功能和意义的函数,至少在原理这一级上有很多相似之处)
由于参数个数的不确定,使va函数具有很大的灵活性,易用性,对没有使用过可变参数函数的编程人员很有诱惑力;那么,该如何编写自己的va函数,va函数的运用时机、编译实现又是如何
下面一一介绍
一、从printf()开始从大家都很熟悉的格式化字符串函数开始介绍可变参数函数
原型:intprintf(constchar*format,
);参数format表示如何来格式字符串的指令,…表示可选参数,调用时传递给"
"的参数可有可无,根据实际情况而定
系统提供了vprintf系列格式化字符串的函数,用于编程人员封装自己的I/O函数
intvprintf/vscanf(constchar*format,va_listap);//从标准输入/输出格式化字符串intvfprintf/vfsacanf(FILE*stream,constchar*format,va_listap);//从文件流intvsprintf/vsscanf(char*s,constchar*format,va_listap);//从字符串//例1:格式化到一个文件流,可用于日志文件FILE*logfile;intWriteLog(constchar*format,
){va_listarg_ptr;va_start