内存操作函数:
头文件#include<string.h>
1、memcopy
函数原型:void *memcpy(void *dest, const void *src, size_t n);
函数功能:从源src所指的内存地址的起始位置
开始拷贝n个字节到目标dest所指的内存 地址的起始位置中。src和dest所指内存区域不能重叠。函数返回指向dest的指针。
如果目标数组dest本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n个字节)。
代码实现:
1 void*my_memcopy(void*dest, const void*src, size_t size) 2 { 3 char*pdest = (char*)dest; 4 const char* psrc = (const char*)src; 5 while (size--) 6 { 7 *pdest = *psrc; 8 pdest++; 9 psrc++; 10 } 11 12 return dest; 13 }
2、memmove
函数原型:void *memmove( void* dest, const void* src,size_t size );
函数功能:由src所指内存区域复制size个字节到dest所指内存区域。
如果dest所指内存区域和src所指内存区域有重叠,
memmove能够保证src所指内存区域的内容在被覆盖之前将重叠、
区域的字节拷贝到dest所指内存区域中。
当dest所指内存区域和src所指内存区域没有重叠,则和memcpy函数功能相同。
memmove的拷贝分为以下几种情况:
代码实现:
1 void* my_memmove(void* dest, const void* src,size_t size) 2 { 3 char*pdest = (char*)dest; 4 const char* psrc = (const char*)src; 5 if (pdest > psrc&&pdest < psrc + size) 6 { 7 while (size--) //从后往前进行拷贝 8 { 9 *(pdest + size) = *(psrc + size); 10 } 11 12 } 13 else 14 { 15 while (size--) //从前往后进行拷贝 16 { 17 *pdest++ = *psrc++; 18 } 19 } 20 return dest; 21 }
3.memset
函数原型:void *memset(void *dest,int c,size_t size);
函数功能 将dest所指内存区域前size个字节赋值为字符c。
代码实现:
1 void* my_memset(void* dest, int c, size_t size) 2 { 3 char* pdest = (char*)dest; 4 while (size--) 5 { 6 *pdest++ = c; 7 } 8 return dest; 9 }