常见面试题--memcpy()和strcpy()的区别

Posted 代二毛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见面试题--memcpy()和strcpy()的区别相关的知识,希望对你有一定的参考价值。

前言

memcpy()和strcpy()的区别是常见的面试题,以前面试的时候被问起过,觉得当时回答的不是很好,这里做一下总结,方便自己和有需要的人查看。这个问题主要考查基本能力,这两个都是常见的拷贝函数,C语言程序员都经常会用到,用法都清楚,但是突然被问到,可能回答的不全面,在此做总结。

函数原型

char* strcpy(char* dest, const char* src);
void *memcpy( void *dest, const void *src, size_t count );

两者区别

1.适用对象不同。strcpy只适用于拷贝字符串,memcpy适用于所有数据的内存拷贝;
2.传参的不同。strcpy函数只需要传入源地址和目的地址,strcpy拷贝到"\\0"时就会结束拷贝;memcpy函数除了源地址和目的地址,还必须指定拷贝的字节数。

注意事项

1.使用strcpy函数时,注意要拷贝的字符串必须要"\\0"结尾,不然拷贝不能正常结束;
2.使用memcpy函数时,源地址指向的内存空间和目的地址指向的内存空间不能重合;因为memcpy是直接拷贝,两个地址有交叉就会出现拷贝的内容把源数据给覆盖掉。如果源地址和目的地址指向的内存空间有交叉,有专门的拷贝函数,会利用缓冲空间去解决空间重叠的问题,具体是哪个函数可以去查man手册。

以上是关于常见面试题--memcpy()和strcpy()的区别的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis常见面试题汇总

面试题Java基础篇-常见面试题总结p3

2021年php常见面试题

面试题MySQL常见面试题合集

Java常见面试题

面试题Redis篇-常见面试题p1