stdarg.h提供了可用於可變參數列表的宏,這是標準庫的一部分,定義爲va_list,主要包括以下三個部分:va_start, va_arg, va_end.
va_list是要讀取的參數列表,va_start(var_arg, n_values);和va_end(var_arg);之間是主要要實現的流程。具體例子如下:
Writer: P.C.
Date: 2014.10.13 11:09
Description: 利用stdarg.h來實現參數列表的可變性
*/
#include "stdafx.h"
#include "stdio.h"
#include "stdarg.h"
void printargs(int arg1, ...)
{
va_list ap;//定義參數列表
int i;
int sum=0;
int count=0;
va_start(ap, arg1); //啓動參數列表的讀取
for (i = arg1; i != -1; i = va_arg(ap, int))//參數列表讀取的過程,-1是人爲設定的終止,可以替換成其他的,如>10,則讀取到第一個大於10的數便終止
{ sum=sum+i;
count++;}
va_end(ap);//結束參數列表的讀取
printf("%d\n",sum/count);
}
int main(void)
{
printargs(1,2,3,4,5,-1);//一定要設置好終止位,否則會出錯
return 0;
}
以前都是通過設定多種構造函數來實現不同參數個數的輸入,利用這個頭文件相對更便利一些,但也會參加對參數控制的麻煩和出錯的可能性