c语言va_arg使用

Python029

c语言va_arg使用,第1张

va_arg是一个宏定义,用于处理函数不确定参数个数时,即可变参数列表时对参数的取用。1 头文件:#include <stdarg.h>2 形式:type va_arg(va_list ap, type)3 说明:这个宏被展开成一个包含类型为type,值为ap的表达式。参数ap应该首先被宏va_start 或 va_copy初始化,但又必须在被宏va_end调用之前使用。每次调用va_arg都会改变ap值使得后续的参数值能被依次添加。参数type应该是一个类型名,并且用type*能够得到该类型的指针类型。如果type为空,或者type和实际参数不匹配, 那么除了以下两种情况,这个宏的行为是未定义的。1) 一个是带符号整型,另一个是与之对应的无符号整型,并且值可以被表达成这两种类型的任何一种;2) 一个是空类型指针,另一个是字符类型指针。第一次调用va_arg返回parmN之后的参数值,后续的调用依次返回剩下的参数值。parmN应为函数中“...”前最后一个参数值。

输入exam 123

argc=2 argv={"exam","123"}

对于while(argv[1][i] != '\0')循环,执行3次。

每次调用 fun中的静态局部变量会自加1,依次返回1,2,3

因为是n=fun() 所以一最后一次为准,n=3

输出n*argc=3*2=6

选A

argc是参数个数,定义为int

argv是字符串数组,存的是参数,定义为char**或者char*

argv[]

比如你编译好的程序为my.exe

在命令行执行

my.exe

1

2

3

那argc就是4,argv[0]是"my.exe",argv[1]是"1",argv[2]是"2",argv[3]是"3"