CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

c中函数的不定参数是怎么实现的?

楼主fat_how(肥浩)2001-11-11 01:10:25 在 C/C++ / C语言 提问

问题点数:20、回复次数:6Top

1 楼karma(无为MS MVP)回复于 2001-11-11 01:15:49 得分 15

follow   this   example:  
   
    #include   <stdio.h>  
    #include   <stdarg.h>  
   
    /*   calculate   sum   of   a   0   terminated   list   */  
    void   sum(char   *msg,   ...)  
    {  
          int   total   =   0;  
          va_list   ap;  
          int   arg;  
          va_start(ap,   msg);  
          while   ((arg   =   va_arg(ap,int))   !=   0)   {  
                total   +=   arg;  
          }  
          printf(msg,   total);  
          va_end(ap);  
    }  
   
    int   main(void)   {  
          sum("The   total   of   1+2+3+4   is   %d\n",   1,2,3,4,0);  
          return   0;  
    }  
  Top

2 楼fat_how(肥浩)回复于 2001-11-11 14:10:56 得分 0

va_****是什么东西?  
  Top

3 楼karma(无为MS MVP)回复于 2001-11-11 14:16:57 得分 0

if   you   take   a   look   at   stdarg.h,   you   will   see  
   
  typedef   struct   {  
                  char   *a0;               /*   pointer   to   first   homed   integer   argument   */  
                  int   offset;           /*   byte   offset   of   next   parameter   */  
  }   va_list;  
   
  #define   _INTSIZEOF(n)       (   (sizeof(n)   +   sizeof(int)   -   1)   &   ~(sizeof(int)   -   1)   )  
   
  #define   va_start(ap,v)     (   ap   =   (va_list)&v   +   _INTSIZEOF(v)   )  
  #define   va_arg(ap,t)         (   *(t   *)((ap   +=   _INTSIZEOF(t))   -   _INTSIZEOF(t))   )  
  #define   va_end(ap)             (   ap   =   (va_list)0   )  
   
  Top

4 楼xwu(蛮牛)回复于 2001-11-11 14:30:55 得分 5

这篇文章讲得很清楚.  
  http://www.fanqiang.com/a4/b2/20010613/151154.htmlTop

5 楼fat_how(肥浩)回复于 2001-11-11 14:35:02 得分 0

不懂  
  Top

6 楼fat_how(肥浩)回复于 2001-11-11 14:59:50 得分 0

谢了  
  Top

相关问题

  • C++ 函数参数问题!
  • c# 可以实现 把某个函数作为 另一个函数的参数进行调用吗?
  • 在Delphi中如何调用C实现的带有动态参数的函数
  • c 中main 函数的参数argc argv[]
  • 怎实现函数的可选参数?
  • 如何在C里面实现不定参数的函数?为什么只能给47分?
  • 并没有带参数的构造函数阿,c++是怎么实现obj temp(*this)的呢?
  • 请问如何用java实现类似于c中的传引用参数的函数
  • 真正的C程序高手,关于不确定数量参数的函数实现问题。
  • 如何用C#实现将Form类名作为参数打开不同的Form的函数

关键词

  • va
  • ap
  • intsizeof
  • arg
  • total
  • sum
  • msg
  • define
  • sizeof
  • list

得分解答快速导航

  • 帖主:fat_how
  • karma
  • xwu

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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