歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言中的可變參數

C語言中的可變參數

日期:2017/3/1 10:25:29   编辑:Linux編程

1、需要頭文件

  1. #include <stdarg.h>

2、函數定義

  1. void logcmd(int arg0,...)
  2. void logcmd(char *arg0,...)


3、解析

i、數字類型

  1. void logcmd(int n,...)
  2. {
  3. va_list ap;
  4. int i = 0;
  5. va_start(ap,n);//使ap指向開始參數
  6. for(;n;n--)//檢索參數
  7. printf("%d ",va_arg(ap,int));
  8. va_end(ap);//釋放參數
  9. printf("\n");
  10. }

其中n表示參數的個數,n之後才是真正的參數。調用如: 

  1. logcmd(0);
  2. logcmd(1,9);
  3. logcmd(2,5,6);
輸出:
  1. 9
  2. 5 6
當然,如果是int類型的參數,也可以不通過n來,比如我們實際用到的參數都是正數,這是可以在末尾多加一個負數,來實現:
  1. void logcmd(int arg0,...)
  2. {
  3. va_list ap;
  4. int i;
  5. va_start(ap,arg0);//使ap指向開始參數
  6. for(i = arg0; i >= 0; i = va_arg(ap,int))//檢索參數
  7. printf("%d ",i);
  8. va_end(ap);//釋放參數
  9. printf("\n");
  10. }
調用:
  1. logcmd(3,1,2,-1);
輸出:
  1. 3 1 2

ii、字符類型

  1. void argsChar(int n,...)
  2. {
  3. va_list args;
  4. char *s;
  5. va_start(args,n);
  6. for(int i=0;i<n;i++){
  7. s = va_arg(args,char*);
  8. printf("%s\n",s);
  9. }
  10. va_end(args);
  11. }

調用: 

  1. argsChar(2,"hello","world");
輸出:
  1. hello
  2. world
Copyright © Linux教程網 All Rights Reserved