| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 629 人关注过本帖
标题:宏定义选择题
只看楼主 加入收藏
飘落天涯
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-5
收藏
 问题点数:0 回复次数:9 
宏定义选择题
请问:在程序中,宏定义和函数的区别()
A,宏定义节省省了存储空间,函数消耗了时间
B,宏定义消耗了存储空间,函数消耗了时间.
答案:B
为什么不选A?
搜索更多相关主题的帖子: 定义 选择 
2007-11-05 13:39
wanderful
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-11-4
收藏
得分:0 
一样不懂
希望有人看见你的
来帮我们解决下这个困惑
2007-11-05 17:51
飘落天涯
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-5
收藏
得分:0 

朋友们帮我解决问题啊,不懂的题目想弄明白好着急啊

2007-11-07 14:09
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
收藏
得分:0 
回复:(飘落天涯)宏定义选择题
宏定义在运行的时候已经被预处理了,替换了 怎么还会占空间呢 这里我也想不明白 希望有高人解答……

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2007-11-07 14:31
nearforest
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-7
收藏
得分:0 
宏定义消耗了存储空间,函数消耗了时间.

请详看一下宏的调用机制:宏的调用,采用的是字符串拷贝代换的方式调用的.当你现在调用某个宏时,它按字符串方式拷贝过去.所以耗空间.
而函数的调用,是找到了函数的地址,即,不进行函数代码的复制(类的内联函数除外),所以它在寻址,建堆栈等上面花时间.

共同进步.
2007-11-07 16:30
aohing
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-11
收藏
得分:0 

宏和函数之间有一定的相似之处,有些功能两个都可以实现,但是两者还是不同的
1) 函数调用时,先求实参表达式的值,再代入形参.而带参的宏只是进行字符的替换
2) 函数调用是在程序运行时处理的,分配临时的内存单元,而宏的展开是在编译时进行的, 展 开时并不分配内存单元,不进行值的传递处理,也没有"返回值"
3) 函数中的形参和实参类型要一致,不一致要类型转换, 而宏不存在类型问题,宏名无类型,它的类型也无类型,只是一个符号代表,展开时代入指定的字符即可
4)调用函数只可得一个返回值,而用宏则可以设法得到几个结果

2007-11-11 21:18
初中时
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-11-11
收藏
得分:0 
学到了好知识 谢谢

2007-11-11 22:26
飘落天涯
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-5
收藏
得分:0 

宏定义消耗了存储空间,函数消耗了时间.

请详看一下宏的调用机制:宏的调用,采用的是字符串拷贝代换的方式调用的.当你现在调用某个宏时,它按字符串方式拷贝过去.所以耗空间.
而函数的调用,是找到了函数的地址,即,不进行函数代码的复制(类的内联函数除外),所以它在寻址,建堆栈等上面花时间.


可是拷贝过去的是常量,系统不是不给常量分配内存吗?

2007-11-12 12:50
飘落天涯
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-5
收藏
得分:0 
谢谢各位指点!
2007-11-12 12:56
zjl138
Rank: 1
等 级:新手上路
威 望:1
帖 子:788
专家分:0
注 册:2007-11-12
收藏
得分:0 
我要成为正式会员.

i like linux...
2007-11-12 13:30
快速回复:宏定义选择题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012730 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved