C语言可变参数函数

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;   
}  


    
    

   
   
  
  
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值