C語言學習筆記——可變參數列表

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;
}
以前都是通過設定多種構造函數來實現不同參數個數的輸入,利用這個頭文件相對更便利一些,但也會參加對參數控制的麻煩和出錯的可能性

發佈了45 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章