CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

省略号参数函数怎么实现?

楼主jaopen(小石)2006-03-10 08:58:08 在 VC/MFC / 基础类 提问

在函数类怎么遍历设计和遍历传入的参数? 问题点数:20、回复次数:1Top

1 楼ydfivy(我就是一送外卖的)回复于 2006-03-10 09:14:36 得分 20

Example  
   
  /*   VA.C:   The   program   below   illustrates   passing   a   variable  
    *   number   of   arguments   using   the   following   macros:  
    *             va_start                         va_arg                             va_end  
    *             va_list                           va_dcl   (UNIX   only)  
    */  
   
  #include   <stdio.h>  
  #define   ANSI                         /*   Comment   out   for   UNIX   version           */  
  #ifdef   ANSI                           /*   ANSI   compatible   version                     */  
  #include   <stdarg.h>  
  int   average(   int   first,   ...   );  
  #else                                       /*   UNIX   compatible   version                     */  
  #include   <varargs.h>  
  int   average(   va_list   );  
  #endif  
   
  void   main(   void   )  
  {  
        /*   Call   with   3   integers   (-1   is   used   as   terminator).   */  
        printf(   "Average   is:   %d\n",   average(   2,   3,   4,   -1   )   );  
   
        /*   Call   with   4   integers.   */  
        printf(   "Average   is:   %d\n",   average(   5,   7,   9,   11,   -1   )   );  
   
        /*   Call   with   just   -1   terminator.   */  
        printf(   "Average   is:   %d\n",   average(   -1   )   );  
  }  
   
  /*   Returns   the   average   of   a   variable   list   of   integers.   */  
  #ifdef   ANSI                           /*   ANSI   compatible   version         */  
  int   average(   int   first,   ...   )  
  {  
        int   count   =   0,   sum   =   0,   i   =   first;  
        va_list   marker;  
   
        va_start(   marker,   first   );           /*   Initialize   variable   arguments.   */  
        while(   i   !=   -1   )  
        {  
              sum   +=   i;  
              count++;  
              i   =   va_arg(   marker,   int);  
        }  
        va_end(   marker   );                             /*   Reset   variable   arguments.             */  
        return(   sum   ?   (sum   /   count)   :   0   );  
  }  
  #else               /*   UNIX   compatible   version   must   use   old-style   definition.     */  
  int   average(   va_alist   )  
  va_dcl  
  {  
        int   i,   count,   sum;  
        va_list   marker;  
   
        va_start(   marker   );                         /*   Initialize   variable   arguments.   */  
        for(   sum   =   count   =   0;   (i   =   va_arg(   marker,   int))   !=   -1;   count++   )  
              sum   +=   i;  
        va_end(   marker   );                             /*   Reset   variable   arguments.             */  
        return(   sum   ?   (sum   /   count)   :   0   );  
  }  
  #endif  
   
   
  Output  
   
  Average   is:   3  
  Average   is:   8  
  Average   is:   0  
   
  Top

相关问题

  • 关于函数参数的省略号使用
  • 函数参数带省略号的用法
  • 在线等待,java函数的参数中可否向c++那样用省略号来代替
  • 怎实现函数的可选参数?
  • C++中函数列表里的省略号怎么用呀?
  • 如何实现函数参数的缺省,
  • c中函数的不定参数是怎么实现的?
  • 在vb中如何实现带参数的构造函数???
  • 问一下API函数参数定义在PB中的实现
  • VB能不能实现参数个数可变的函数?????????????

关键词

  • unix
  • start
  • va
  • average
  • marker
  • sum
  • ansi
  • variable
  • arguments
  • compatible version

得分解答快速导航

  • 帖主:jaopen
  • ydfivy

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo