鱼C论坛

 找回密码
 立即注册
查看: 1429|回复: 4

[已解决]久了,忘了有些概念了,大家帮我分析哈

[复制链接]
发表于 2019-9-6 21:51:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.在宏名作用域内所有与宏名相同的字符都讲被替换;
2.若一个函数没有return 语句,则什么都不会返回;
3.形参数组元素个数必须等于实参数组的元素个数;
4.char* s;s="ABCDE"
以上几句为什么不对?有大佬帮我分析一下吗?


最佳答案
2019-9-6 22:28:39
对于宏定义中的形参,在替换列表中,如果不是作为#或##的操作数,那么将对应实参完全展开(相当于对实参进行求值),然后将替换列表中的形参替换掉.如果是#或##的操作数,那么不进行替换。如果在替换列表中发现当前正在展开的宏的名字,那么这里不进行替换
2.编译器会自动加上return 0(没写的话),程序停止
3.可以小于·自动补0
4,char*s;s=&p或者char*s=p




记得采纳噢噢噢噢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-6 22:28:39 | 显示全部楼层    本楼为最佳答案   
对于宏定义中的形参,在替换列表中,如果不是作为#或##的操作数,那么将对应实参完全展开(相当于对实参进行求值),然后将替换列表中的形参替换掉.如果是#或##的操作数,那么不进行替换。如果在替换列表中发现当前正在展开的宏的名字,那么这里不进行替换
2.编译器会自动加上return 0(没写的话),程序停止
3.可以小于·自动补0
4,char*s;s=&p或者char*s=p




记得采纳噢噢噢噢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-7 12:20:06 | 显示全部楼层
AmosAlbert 发表于 2019-9-6 22:28
对于宏定义中的形参,在替换列表中,如果不是作为#或##的操作数,那么将对应实参完全展开(相当于对实参进行求 ...

第一个问题能详细解释一下吗?#  ##什么意思,举个列子最好

还有第三个问题,实参有5个元素,传递的时候肯定也是五个啊,怎么会多或者少呢

第四题不是这个原因,我记得 原因是“ABCD”在字符串常量区,然后怎样怎样的,具体记不得了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-7 18:12:46 | 显示全部楼层
楼主问的是C还是C++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-7 21:11:29 | 显示全部楼层
迷雾少年 发表于 2019-9-7 18:12
楼主问的是C还是C++

C,这是一套面试题里面的题目,C方向的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表