C++...三個點用法 實現參數個數可變的函數


C語言中實現參數個數可變的函數      
  采用C語言編程的時候,函數中形式參數的數目通常是確定的,在調用時要依次給出與形式參數對應的所有實際參數。但在某些情況下希望函數的參數個數可以根據需要確定。典型的例子有大家熟悉的函數printf()、scanf()和系統調用execl()等
  1、在win環境下編程例子:
  以下例子在VS2010編譯通過。
#include<stdio.h>
#include<string.h>
#include<stdarg.h>
int demo(char * ,...);

int main()
{
demo("TEST",5,4,3,2,1,0);//第一個參數只是一個標識,並不在參數表中。
getchar();
return 0;
}

int demo(char *msg,...)
{
va_list argp;
int argno = 0;
int para;
va_start(argp,msg);
while (true)
{
para = va_arg(argp,int);
if (para == 0) break;
printf("Parameter #%d is : %d\n",argno,para);
argno++;
}
va_end(argp);
return 0;
}

2. UNIX System
int    demo(va_alist)       
va_dcl                                                                
{  
va_list    argp;                          
int   argno = 0;              
int   para;                             
va_start(argp);              
while    (true)    {  
para   =   va_arg(argp,int);              

if    (para==0)   break;  
printf("Parameter #%d   is: %d\n",argno,para);  
argno++;  
}                            
va_end(argp);                          
return    0;  
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM