莊周夢(mèng)蝶

          生活、程序、未來(lái)
             :: 首頁(yè) ::  ::  :: 聚合  :: 管理
              通過(guò)stdarg.h頭文件為函數(shù)提供了定義可變參數(shù)列表的能力。聲明一個(gè)可變參數(shù)的函數(shù)類似:
          void f1(int n,...);

          其中n表示參數(shù)列表個(gè)數(shù),而用省略號(hào)來(lái)表示未知參數(shù)列表。stdarg.h中提供了一個(gè)va_list類型,用于存放參數(shù)。一個(gè)大概的使用過(guò)程類似:
          void f1(int n,...)
          {
             va_list ap;
             va_start(ap,n);   //初始化參數(shù)列表
             double first=va_arg(ap,double);  //取第一個(gè)參數(shù)
             int second=va_arg(ap,int);   //取第二個(gè)參數(shù)
             ...
             va_end(ap);  //清理工作
          }
          看一個(gè)求和的例子:
          #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語(yǔ)言對(duì)可變參數(shù)的使用還是有點(diǎn)麻煩,不如ruby和java簡(jiǎn)便。比如ruby中定義并使用可變參數(shù)參數(shù):
          def sum(*e)
             e.inject{|sum,i| sum+=i}
          end

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

          主站蜘蛛池模板: 秦皇岛市| 宝山区| 珲春市| 麻栗坡县| 尉犁县| 内江市| 彭泽县| 新绛县| 黔江区| 望都县| 富裕县| 浦县| 阿拉尔市| 桦甸市| 治县。| 新郑市| 绥阳县| 阳东县| 宁阳县| 澄迈县| 广东省| 鄱阳县| 行唐县| 曲水县| 深圳市| 永兴县| 舒兰市| 白河县| 龙海市| 和静县| 邹平县| 平陆县| 东莞市| 泽普县| 江陵县| 思南县| 平顺县| 五大连池市| 育儿| 包头市| 孟津县|