1、需要頭文件
- #include <stdarg.h>
2、函數定義
- void logcmd(int arg0,...)
- void logcmd(char *arg0,...)
3、解析
i、數字類型
- void logcmd(int n,...)
- {
- va_list ap;
- int i = 0;
-
- va_start(ap,n);//使ap指向開始參數
- for(;n;n--)//檢索參數
- printf("%d ",va_arg(ap,int));
- va_end(ap);//釋放參數
- printf("\n");
- }
其中n表示參數的個數,n之後才是真正的參數。調用如:
- logcmd(0);
- logcmd(1,9);
- logcmd(2,5,6);
輸出:
- 9
- 5 6
當然,如果是int類型的參數,也可以不通過n來,比如我們實際用到的參數都是正數,這是可以在末尾多加一個負數,來實現:
- void logcmd(int arg0,...)
- {
- va_list ap;
- int i;
- va_start(ap,arg0);//使ap指向開始參數
- for(i = arg0; i >= 0; i = va_arg(ap,int))//檢索參數
- printf("%d ",i);
- va_end(ap);//釋放參數
- printf("\n");
- }
調用:
- logcmd(3,1,2,-1);
輸出:
- 3 1 2
ii、字符類型
- void argsChar(int n,...)
- {
- va_list args;
- char *s;
- va_start(args,n);
- for(int i=0;i<n;i++){
- s = va_arg(args,char*);
- printf("%s\n",s);
- }
- va_end(args);
- }
調用:
- argsChar(2,"hello","world");
輸出:
- hello
- world