大家好,今天有位近期面试我国某著名汽车制造公司嵌入式岗位的小伙伴给我发来了一道面试题,说是栽在了,没答上来。
我拿到题目后好好研究了一下,确实陷阱不少,有一定的深度和代表性,此题可以大致反映你C语言学习目前的层次和水平,是道好题。所以今天就写篇推送给大伙好好讲讲这道题,也让我们的学习尽可能和实际岗位需求接轨,话不多说了,请看题:
系统并不是跟我们想像的那样给数组d只分配了4字节的内存,而是分配了16字节(内存地址为16进制)!到这里,基本就全明白了,应该是把s复制到d中时,26个字母占用26字节确实越界了,占用了s本身的一些存储空间,d原来的16字节空间存了到p的16个字母,从q开始剩下的10个字母把原先s中的前十一个字母覆盖了(因为strcpy还追加了空字符)
最后我们总结反思一下,开头我们说这道题可以大致反映你C语言目前的学习层次,就像A,B ,C三个小伙伴一样,分别为一般,还可以,比较扎实,当然也不能,说的是大致反映。可以看出,真实的老人被蟹钳伤身亡面试题并不简单,需要扎实的C语言基础和一定的分析能力,希望大家在后面的学习中找准方向、多加努力,就说到这里吧,谢谢各位了!