码迷,mamicode.com
首页 > 其他好文 > 详细

可变参数编程

时间:2017-08-23 13:28:18      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:oid   double   idt   va_arg   均值   ase   blog   char   height   

可变参数列表是通过宏来实现的,这些宏定义于stdarg.h 头文件中。

这个头文件声明了一个类型va_list 和 三个宏  va_start  、va_arg 和 va_end。

我们可以声明一个类型为va_list 的变量,与这几个宏配合使用,访问参数的值。

 

 

1、求平均值

技术分享

 

2、求最大值

技术分享

 

3、实现一个简化的print 函数

void Print(char *str,...)
{
 va_list list;
 va_start(list,str);
 char ch;
 char *p;
 int m;
 double n;
 while(*str != ‘\0‘)
 {
  if(*str == ‘%‘)
  {
   switch(*(str+1))
   {
   case ‘c‘: ch = va_arg(list,char);
             putchar(ch);
          str += 2;
          break;
      case ‘s‘: p = va_arg(list,char*);
             printf("%s",p);
          str += 2;
          break;
      case ‘d‘: m = va_arg(list,int);
             printf("%d",m);
          str += 2;
          break;
      case ‘f‘: n = va_arg(list,double);
             printf("%f",n);
          str += 2;
          break;
      default : putchar(*str++);
             break;
   }
  }
  else
   putchar(*str++);
 }
}

int main()
{
 char *p = "avc";
 int b = 9;
 double m = 0.9;
 char c = ‘a‘;
 Print("%s,%d,%c,%f\n",p,b,c,m);
}

 

可变参数编程

标签:oid   double   idt   va_arg   均值   ase   blog   char   height   

原文地址:http://www.cnblogs.com/97-5-1/p/7417275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!