乐趣区

关于c++:C面试八股文memsetmemcpy和strcpy的区别是什么

某日小二加入 XXX 科技公司的 C ++ 工程师开发岗位 4 面:

面试官:memset、memcpy 和 strcpy 的区别是什么?

小二:memset 用于将一块内存设置为特定的值,

memcpy 用于将一块内存从一个地位复制到另一个地位,

strcpy 用于将一个字符串从一个地位复制到另一个地位。

面试官:嗯,不错。那么你晓得这三个函数在应用时要留神哪些问题吗?

小二:呃。。。

面试官:好的,回去等告诉吧。

这三个函数在 C /C++ 开发中用到的频率比拟高。

memset 函数罕用于 POD 类型对象的初始化,个别第二个参数都是 0,第三个参数是这段内存的长度。

memcoy 函数须要留神的点是,函数传入的源地位和指标地位不能有重叠,否则这种操作引发的后果无奈预知。如果你不可能确定传入的源地位和指标地位是否存在重叠,那么能够应用 memmove 函数代替 memcoy。

strcpy 存在另一个问题,那就是源字符串的长度可能大于指标区域的长度,导致指标区域内存被超写,造成不可预知的谬误。当然也能够通过应用 strncpy 函数传入指标区域的大小 -1,如果源字符串的长度小于指标区域的大小 -1,则全副拷贝,否则最多只拷贝指标长度 - 1 的内容,保障指标字符串以 0 结尾。

小伙伴们,如果你是小二,你能比小二答复的更好吗?

关注我,带你 21 天“精通”C++!(狗头)

退出移动版