唐宋元明沁 发表于 2019-9-6 21:51:57

久了,忘了有些概念了,大家帮我分析哈

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


AmosAlbert 发表于 2019-9-6 22:28:39

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




记得采纳噢噢噢噢{:10_256:}{:10_256:}{:10_256:}

唐宋元明沁 发表于 2019-9-7 12:20:06

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

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

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

第四题不是这个原因,我记得 原因是“ABCD”在字符串常量区,然后怎样怎样的,具体记不得了

迷雾少年 发表于 2019-9-7 18:12:46

楼主问的是C还是C++

唐宋元明沁 发表于 2019-9-7 21:11:29

迷雾少年 发表于 2019-9-7 18:12
楼主问的是C还是C++

C,这是一套面试题里面的题目,C方向的
页: [1]
查看完整版本: 久了,忘了有些概念了,大家帮我分析哈