C語言中的可變參數列表:從語言中有時候會遇到一些參數個數是可變的函數,像scanf,printf等,這些函數內部的參數列表都是可變的。
如函數原型:scanf(const char * format,…);
解釋:除了format以外,後面跟著的參數 個數,類型是可變的,用…作為一種占位符號。
“…”稱為可變參數列表,可以用來接受個數和類型不確定的參數
使用:
可變參數列表在C語言中使用這樣的三個宏(va_start,va_arg,va_end)和一個類型(va_list)來進行實現的,他們都是定義在stdarg.h頭文件中的
宏:
1:va_start原型:
void va_start(va_list ap,paramN);
參數:va_list:存儲參數的類型信息
ap:可變參數列表地址
paramN:確定的參數
2:va_arg原型:
void va_arg(va_list ap,type);
返回下一個參數的值
3:va_end原型:
void va_end(va_list ap,type);
關閉初始化的列表
使用方式:
1. 使用va_list初始化可變參數列表
2. 使用va_arg逐個獲取參數值
3. 用va_end將可變參數列表清空
示例代碼
#include#include float average_list(int value_num,...); int main(int argc,char * argv[]){ printf("average_1:%.2f\n",average_list(8,1,3,5,7,9,12,15,17)); return 0; } float average_list(int value_num,...){ va_list list; float sum = 0.0f; va_start(list,value_num); int i ; for(i = 0;i 輸出的結果為: average_1:8.62