免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: see_3000
打印 上一主题 下一主题

[C] 【实时更新】2009.07.31传说中最好的linux c入门教材---Linux C编程一站式学习.pdf [复制链接]

论坛徽章:
0
151 [报告]
发表于 2010-01-29 08:48 |只看该作者
怎么解压出错啊?

论坛徽章:
0
152 [报告]
发表于 2010-01-29 08:50 |只看该作者
怎么解压出错啊?

论坛徽章:
0
153 [报告]
发表于 2010-01-29 13:41 |只看该作者
支持,网站做得也不错

论坛徽章:
0
154 [报告]
发表于 2010-02-13 16:27 |只看该作者
非常非常感谢!

论坛徽章:
0
155 [报告]
发表于 2010-03-24 13:37 |只看该作者
一本很不错的书

论坛徽章:
0
156 [报告]
发表于 2010-03-25 20:57 |只看该作者
顶…………………………………………………………6

论坛徽章:
0
157 [报告]
发表于 2010-03-26 19:48 |只看该作者
楼主是好人

论坛徽章:
0
158 [报告]
发表于 2010-03-27 10:12 |只看该作者
hao ding

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
159 [报告]
发表于 2010-03-28 10:12 |只看该作者
本帖最后由 pmerofc 于 2010-03-28 10:22 编辑

即使实参没有Side Effect,使用函数式宏定义也往往会导致较低的代码执行效率。下面举一个极端的例子,也是个很有意思的例子。

例 21.1. 函数式宏定义

#define MAX(a, b) ((a)>(b)?(a)b))

int a[] = { 9, 3, 5, 2, 1, 0, 8, 7, 6, 4 };

int max(int n)
{
        return n == 0 ? a[0] : MAX(a[n], max(n-1));
}

int main(void)
{
        max(9);
        return 0;
}



这段代码从一个数组中找出最大的数,如果MAX是个真正的函数,这个算法就是从前到后遍历一遍数组,时间复杂度是Θ(n),而现在MAX是这样一个函数式宏定义,思考一下这个算法的时间复杂度是多少?

引自 http://learn.akae.cn/media/ch21s02.html

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
160 [报告]
发表于 2010-03-28 10:13 |只看该作者
本帖最后由 pmerofc 于 2010-03-28 10:22 编辑

LN pmerofc@126.com
2010-01-25 23:37:01

例 21.1. 函数式宏定义
用来说明宏“往往会导致较低的代码执行效率”我觉得没有说服力。
因为那段代码效率低并非是由于宏而是因为算法,那段代码用递归函数写同样效率低。

引自 http://learn.akae.cn/akabook/ch21s02_2
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP