首页 > 编程语言 > 详细

[C/C++]函数可变参数表

时间:2015-10-04 20:55:43      阅读:300      评论:0      收藏:0      [点我收藏+]

以前看《C++ Primer》就看到过函数的可变参数列表,但是书中只是一带而过,具体用法没有介绍。现在把“圣经”看了一遍,以前的很多疑问都烟消云散。
  可变参数的使用主要用到标准头文件<stdarg.h>中定义一组宏定义,它们对如何遍历参数表进行了定义。其中:va_list类型声明一个变量(如ap),该变量将依次引用各参数。va_start将ap初始化为指向第一个无名参数的指针。每次调用va_arg,该函数都将返回一个参数,并将ap指向下一个参数。最后调用va_end,完成必要的清理工作.
 下面是用可变参数表实现的简化的printf函数,代码如下:

#include <stdarg.h>
void minprintf(char *fmt, ...){
     va_list ap;
     char *p, *sval;
     int ival;
     double dval;
     va_start(ap, fmt);
     for (p = fmt; *p; p++) {
         if (*p != ‘%‘) {
             putchar(*p);
             continue;
         }
         switch (*++p) {
           case ‘d‘:
               ival = va_arg(ap, int);
               printf("%d", ival);
               break;
           case ‘f‘:
               dval = va_arg(ap, double);
               printf("%f", dval);
               break;
           case ‘s‘:
               for (sval = va_arg(ap, char *); *sval; sval++)
                   putchar(*sval);
               break;
           default:
               putchar(*p);
               break;
           }
       }
       va_end(ap);
   }

  

[C/C++]函数可变参数表

原文:http://www.cnblogs.com/skycore/p/4854965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!