C語言函數的可變參數列表

來源:互聯網
上載者:User

標籤:strong   div   使用   第一個   過程   命名   --   star   std   

  可變參數列表可通過宏來實現,這些宏定義在stdarg.h標頭檔中,它是標準庫的一部分。這個標頭檔聲明了一個類型va_list和三個宏----va_start,va_arg,va_end.可以聲明一個類型為va_list的變數,與這幾個宏配合使用,訪問參數的值。參數列表的可變部分位於一個或多個普通參數(具名引數)的後面(即參數列表中至少要有一個具名引數),它在函數原型中以一個省略符號表示。

例如:定義一個函數average可以計算若干個整數的平均值:

 1 #include <stdarg.h> 2 float average(int n_value,...) 3 { 4     va_list var_arg; 5     int count; 6     float sum=0; 7  8     va_start(var_arg,n_value); 9 10     for(count =0;count<n_value;count++)11     {12         sum+=va_arg(var_arg,int);13     }14 15     va_end(var_arg);16     return sum/n_values;17 }

說明:函式宣告一個名叫va_arg的變數,它用來訪問參數列表的未確定部分。這個變數通過調用va_start來初始化。它的第一個參數是va_list 類型變數的名字,第二個參數是省略符號前最後一個有名字的參數。初始化過程把變數var_arg設定為指向可變參數部分的第一個參數。為了訪問參數,需要使用va_arg,這個宏接受兩個參數:va_list類型變數和參數列表中下一個參數的類型。在這個例子中,所有的可變參數都是整型。va_arg返回這個參數的值,並使var_arg指向下一個可變參數。最後,當訪問完畢最後一個可變參數之後,需要調用va_end。

C語言函數的可變參數列表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.