Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1613011
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类: C/C++

2009-01-24 11:26:21

嵌入汇编求不定参数平均值一文中,我们用在c语言中嵌入汇编的方式去访问各个不定参数,本文中, 我们用c语言的3个宏来实现同样的功能。

下面是代码:

// avg.c

#include <stdio.h>
#include <stdarg.h>

int avg(int num, ...);

int main()
{
    int result;
    result = avg(5, 2, 8, 7, 4, 9);
    printf("avg is %d\n", result);
    return 0;
}
int avg(int num, int arg, ...)
{
    va_list ap;
    int n;
    int summary;

    if( num < 1 )
        return 0;    
    
    n = num;
    
    va_start(ap, arg); //初始化ap

    summary = arg;
    while(--n > 0)
        summary += va_arg(ap, int); //遍历所有可变参数的值
       
    va_end(ap); //“释放”ap,与va_start对称出现

    return summary / num;
}


代码很简单, 主要用到三个宏va_start, va_end, 以及va_arg,代码上面都有注释, 就不再详细说明了。
阅读(1177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~