Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124743
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-14 10:05
个人简介

坚持学习,每天进步一点点……

文章分类

全部博文(30)

文章存档

2017年(13)

2016年(17)

分类: C/C++

2016-07-23 17:50:04

C中的参数可变参数可以有两种使用方法:
1.宏定义
#define print_test(...) \
        printf("%s\n",__VA_ARGS__)
2.函数
#include
#include
int demo(char* test,...)    
{    
    va_list argp;                   /* 定义保存函数参数的结构,可以理解为argp为指向参数列表的一个指针 */    
    int argno = 0;                  /* 纪录参数个数 */    
    char *para = NULL;
    va_start( argp,test);/* argp指向传入的第一个可选参数,test是最后一个确定的参数 */      
    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;    
}  
void main( void )    
{    
    demo("DEMO", "This", "is", "a", "demo!" ,"333333", "/0");    
}
输出的结果:
Parameter #0 is: This
Parameter #1 is: is
Parameter #2 is: a
Parameter #3 is: demo!
Parameter #4 is: 333333
参考文章
http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html
http://www.cnblogs.com/gogly/articles/2416833.html
http://blog.sina.com.cn/s/blog_661314940100qmfg.html
阅读(1662) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~