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语言可变参数函数
最新推荐文章于 2025-05-08 08:15:00 发布
1337

被折叠的 条评论
为什么被折叠?



