va_list 的相关知识

http://www.cppblog.com/qiujian5628/archive/2008/01/21/41562.html

 

va_start使argp指向第一个可选参数。va_arg返回参数列表中的当前参数并使argp指向参数列表中的下一个参数。va_end把argp指针清为NULL。函数体内可以多次遍历这些参数,但是都必须以va_start开始,并以va_end结尾。 

  1).演示如何使用参数个数可变的函数,采用ANSI标准形式 
  #include 〈stdio.h〉 
  #include 〈string.h〉 
  #include 〈stdarg.h〉 
  /*函数原型声明,至少需要一个确定的参数,注意括号内的省略号*/ 
  int demo( char, ... ); 
  void main( void ) 
  { 
   demo("DEMO", "This", "is", "a", "demo!", ""); 
  } 
  /*ANSI标准形式的声明方式,括号内的省略号表示可选参数*/ 
  int demo( char msg, ... ) 
  { 
/*定义保存函数参数的结构*/ 
   va_list argp; 
   int argno = 0; 
   char para; 

   /*argp指向传入的第一个可选参数,msg是最后一个确定的参数*/ 
   va_start( argp, msg ); 
   while (1) 

   para = va_arg( argp, char); 
   if ( strcmp( para, "") == 0 ) 
break; 
   printf("Parameter #%d is: %s/n", argno, para); 
   argno++; 
   } 
   va_end( argp ); 
   /*将argp置为NULL*/ 
   return 0; 
  } 

你可能感兴趣的:(list,null)