注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

c 语言可变参数  

2012-07-18 01:28:13|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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 <stdio.h>  
#include <string.h>  
#include <stdarg.h>  
  
/* 函数原型声明,至少需要一个确定的参数, 
注意括号内的省略号 */  
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;     
  评论这张
 
阅读(635)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017