刚看了一道面试题目,感觉挺有趣的,自己以前也从未注意过,在此记录下。
函数Fun的返回值是多少?第一感觉sizeof(a)=10,很正常的呀!我们再看看这个函数
第一感觉sizeof(a)=4,大部分人都可以回答正确。为什么二者会不同呢?假如我们把两个函数放在一个cpp文件里编译,C++会认为是重载而编译通过吗?全部代码如下:
编译结果:
可以看到,编译失败了,而且从第二个红框里看到函数的形参里是"char []",和10根本没有任何关系。
综上,我们就可以知道:C++在编译,name mangling后都是char []的形参列表。所以sizeof(a)在32位的机器上,返回值=4.
还有一点,char []和char*实际上是一样的,可以再加个函数编译看看结果
结果还是相同的,所以题目看似简单,如果停留在浅显的层面,还是有大部分人会做错,我也是,学习了!