<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    C語言中實現可變參數函數

    Posted on 2007-08-31 17:06 dennis 閱讀(526) 評論(0)  編輯  收藏 所屬分類: linux & C
        通過stdarg.h頭文件為函數提供了定義可變參數列表的能力。聲明一個可變參數的函數類似:
    void f1(int n,...);

    其中n表示參數列表個數,而用省略號來表示未知參數列表。stdarg.h中提供了一個va_list類型,用于存放參數。一個大概的使用過程類似:
    void f1(int n,...)
    {
       va_list ap;
       va_start(ap,n);   //初始化參數列表
       double first=va_arg(ap,double);  //取第一個參數
       int second=va_arg(ap,int);   //取第二個參數
       ...
       va_end(ap);  //清理工作
    }
    看一個求和的例子:
    #include<stdio.h>
    #include
    <stdarg.h>
    double sum(int ,);
    int main(void)
    {
      
    double s,t;
      s
    =sum(3,1.1,2.2,13.3);
      t
    =sum(6,1.1,2.1,13.1,4.1,5.1,6.1);
      printf(
    "return value for "  \
        
    "sum(3,1.1,2.2,13.3):   %g\n",s);
      printf(
    "return value for " \
        
    "sum(6,1.1,2.1,13.1,4.1,5.1,6.1):    %g\n",t);
      
    return 0;
    }
    double sum(int lim,)
    {
      va_list ap;
      
    double total=0;
      va_start(ap,lim);
      
    int i;
      
    for(i=0;i<lim;i++)
          total
    +=va_arg(ap,double);
      va_end(ap);
      
    return total;
    }

    C語言對可變參數的使用還是有點麻煩,不如ruby和java簡便。比如ruby中定義并使用可變參數參數:
    def sum(*e)
       e.inject{|sum,i| sum+=i}
    end

    sum(1,2,3,4,5)=>15
      

    主站蜘蛛池模板: 亚洲午夜日韩高清一区| 亚洲精品动漫免费二区| 亚洲人成网77777色在线播放| 黄色a三级三级三级免费看| 又大又黄又粗又爽的免费视频| 亚洲日韩AV一区二区三区中文 | 亚洲成a人片在线观看无码| 中国videos性高清免费| 激情综合亚洲色婷婷五月APP| 最近免费中文字幕mv电影| 亚洲美女视频一区二区三区| 91九色老熟女免费资源站| 亚洲一区在线免费观看| 在线观看成人免费| 在线观看亚洲电影| 亚洲区小说区图片区| 黄色网址在线免费| 亚洲福利秒拍一区二区| 午夜精品在线免费观看| 深夜久久AAAAA级毛片免费看| 国产av无码专区亚洲av果冻传媒| 中文字幕免费人成乱码中国| 蜜芽亚洲av无码精品色午夜| 免费人成网站永久| 亚洲精品无码成人片久久| 最近中文字幕mv免费高清在线| 亚洲五月丁香综合视频| 四虎免费久久影院| 免费国产99久久久香蕉| 亚洲激情视频图片| 亚洲精品动漫人成3d在线| 久久久精品免费视频| 亚洲中文无码a∨在线观看| 又爽又高潮的BB视频免费看| 精品成人免费自拍视频| 中国china体内裑精亚洲日本| 亚洲一区二区三区乱码A| 57pao一国产成永久免费| 黄色免费网址大全| 777亚洲精品乱码久久久久久 | 亚洲精品国产福利一二区|