C语言的可变参数函数主要要用到以下三个宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); 它们都是在头文件stdarg.h中定义的,va是variable-argument(可变参数)的意思。 C语言的可变参数函数必须以某种方式提供参数的个数! 2.1 printf 第一个参数提供了可变参数的个数 2.2 字符串类型可变参数 #include #include #include /* 函数原型声明,至少需要一个确定的参数, 注意括号内的省略号 */ int demo( char *, ... ); int main( void ) { demo("DEMO", "This", "is", "a", "demo!", "/0"); return 0; } /* ANSI标准形式的声明方式,括号内的省略号表示可选参数 */ int demo( char *msg, ... ) { va_list argp; /* 定义保存函数参数的结构 */ int argno = 0; /* 纪录参数个数 */ char *para; /* 存放取出的字符串参数 */ /* argp指向传入的第一个可选参数, msg是最后一个确定的参数 */ va_start( argp, msg ); while (1) { para = va_arg( argp, char *); /*取出当前的参数,类型为char *. */ if ( strcmp( para, "/0" )== 0 ) /* 采用空串指示参数输入结束 */ break; printf("parameter #%d is: %s/n", argno, para); argno++; } va_end( argp ); /* 将argp置为NULL */ return 0; } 2.3 整数类型可变参数 Add(int num, ...) // 以0作为最后一个可变的参数!!!!!!! { va_list ap; int rst=num, i; va_start(ap, num); while((i=va_arg(ap,int))!=0) rst += i; va_end(ap); return rst; }
C语言可变参数函数
最新推荐文章于 2024-04-12 03:41:08 发布