/************************************************************************************1.模拟实现memmove函数的实现。(考虑内存重叠) ************************************************************************************/ #include<stdio.h> #include<string.h> #include<assert.h> void * my_memmove(void *aim,const void *source,int length) { int i = 0; void *p = aim; assert(aim&&source); if (((char*)aim - (char*)source) >= 0)//内存重叠从后往前拷贝 { for (i = length-1; i >=0; i--) { *((char *)aim + i*sizeof(char)) = *((char *)source + i*sizeof(char)); } return (p); } else //不重叠 正常拷贝 { for (i = 0; i <length; i++) { *((char *)aim + i*sizeof(char)) = *((char *)source + i*sizeof(char)); } return (p); } } // 1 2 3 4 5 6 7 8 9 0 0 // *0*1*2*3*4*5*6*7*8*9*10 //1 2 3 4 5 6 7 8 9 0 0 int main() { int arr[11] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; int i = 0; my_memmove(arr, arr , 36); for (i; i < 11; i++) printf("%d\n",arr[i]); /*for (i = 0; i < 10;i++) printf("%d\n",*( (int *)my_memmove(arr, arr+1, 36)+1));*/ return 0; }
c 语言 自己实现 内存拷贝函数 memmov()
原创
©著作权归作者所有:来自51CTO博客作者霜柒染的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:C语言 喝汽水问题
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【C语言加油站】qsort函数的模拟实现
【C语言加油站】qsort函数的模拟实现本文详细介绍了使用冒泡排序的逻辑模拟实现可以排序任意类型数组的qsort函数……
C语言 qsort排序函数 冒泡排序 回调函数 void*指针 -
[C语言] 内存函数
内存函数
内存拷贝 -
【C语言】memmove() 内存拷贝可重叠
本篇博客就来介绍下关于C语言常用的内存函数之memmove()函数。
#include 强制转换 #define -
【C语言】memcpy() 内存拷贝不重叠
【C语言】memcpy() 内存拷贝不重叠
#include 数据类型 强制转换 -
C语言—内存操作函数讲解及其模拟实现
C语言——内存操作函数保姆级讲解及其模拟实现
内存拷贝 内存操作 C语言