歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言中的可變參數

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.   
  6.     va_start(ap,n);//使ap指向開始參數  
  7.     for(;n;n--)//檢索參數  
  8.         printf("%d ",va_arg(ap,int));  
  9.     va_end(ap);//釋放參數  
  10.     printf("\n");  
  11. }  

其中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