C++面试--实现一个Memcpy函数
来源:互联网 发布:网络短剧 搞笑 编辑:程序博客网 时间:2024/05/22 03:07
char *strcpy(char *dest,char *src)
{
if (src == NULL || dest == NULL)
return NULL;
char *strdest = dest;
char *strsrc = src;
while ((*strdest++ = *strsrc++) != '\0');
return dest;
}
void *memcpy_(void *memTo,const void *memFrom, size_t size)
{
if (memTo == NULL || memFrom == NULL)
return NULL;
void *res = memTo;
if(memTo > memFrom && (char*)memTo < (char*)memFrom + size)
{//内存有重叠,从高地址开始复制
memTo = (char*)memTo + size - 1;
memFrom = (char*)memFrom + size - 1;
while(size--)
{
*(char*)memTo = *(char*)memFrom;
memTo = (char*)memTo - 1;
memFrom = (char*)memFrom - 1;
}
}
else//内存没有重叠,从低地址开始复制
while(size--)
{
*(char*)memTo = *(char*)memFrom;
memTo = (char*)memTo + 1;
memFrom = (char*)memFrom + 1;
}
return res;
}
strcpy和memcpy主要有以下3方面的区别。
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
0 0
- C++面试--实现一个Memcpy函数
- 实现一个Memcpy函数
- C/C++--memcpy函数实现
- 实现c中memcpy函数
- 简单粗暴直面实现一个Memcpy函数
- 【C语言】memcpy函数的实现
- memcpy/memset函数的c语言实现
- C语言模拟实现memcpy,memmove函数
- [C练习]实现memcpy原型函数
- 【c语言】模拟实现memcpy()、memmove()函数
- memcpy/memset函数的c语言实现
- 面试题目写一个内存拷贝函数memcpy()
- 淘宝面试-Strcpy与memcpy两函数的经典实现
- 【c/c++】memcpy()函数
- [C/C++笔面试]自己实现memcpy,小结strcpy与memcpy区别
- 面试笔试之memcpy函数
- C 函数 strncpy && memcpy
- C语言memcpy()函数
- SCOI2017酱油记
- nginx出现 “414 request-uri too large”
- 欢迎使用CSDN-markdown编辑器
- 学术笔记·总结·十六
- Shader编程学习笔记
- C++面试--实现一个Memcpy函数
- DelayQueue 实际应用
- Discuz!手机版版块页面主题列表中隔几个主题插入一个广告位的方法
- Android HttpURLConnection 加载网络图片
- SVN使用步骤
- 第三章 变量和表达式
- java 多线程 lock接口 的使用
- Java中的JavaBean类
- python连接redis