<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    C語言中編寫可變參數函數

    時間:2024-12-07 13:43:32 C語言 我要投稿
    • 相關推薦

    C語言中編寫可變參數函數

      可變參數函數又稱參數個數可變函數,即函數參數數目可變。下面是小編分享的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 "

      ,s);

      printf(

      " return value for "

      

      " sum(6,1.1,2.1,13.1,4.1,5.1,6.1): %g "

      ,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

    【C語言中編寫可變參數函數】相關文章:

    C語言中實現參數個數可變函數11-12

    C語言的可變參數問題08-23

    C語言中指針變量作為函數參數詳解07-01

    C語言中的鏈接編寫10-02

    C語言main函數的參數07-25

    C/C++函數重載與缺省參數05-25

    C語言中函數的區分08-30

    C語言函數參數傳遞問題10-17

    C語言函數參數傳遞規律10-12

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人