码迷,mamicode.com
首页 > 编程语言 > 详细

c 语言 自己实现 内存拷贝函数 memmov()

时间:2015-08-09 18:59:48      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:c;内存拷贝函数

/************************************************************************************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()

标签:c;内存拷贝函数

原文地址:http://shaungqiran.blog.51cto.com/10532904/1683111

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!