概述
模拟实现内存移动函数memmove:
我的代码是关于将字符数组
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
中的3,4,5,6移动到5,6,7,8位置处。这个内存移动涉及到解决了内存重叠的问题,而memcmp()函数http://10740184.blog.51cto.com/10730184/1714516没有解决。为防止覆盖,若不内存重叠时就正常如strcpy拷贝,否则就从后往前拷贝。size-t count指的是字节数,4个整型的元素字节数。src =src +8,指的是前面有两个整形的字节数。dest指的是前面有四个整形的字节数。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void *my_memmove(void *p1, void *p2, size_t count)
{
assert(p1);
assert(p2);
char *dest = (char *)p1;
char *src = (char *)p2;
dest = dest + 16;
src = src + 8;
if ((src < dest) && (dest < src + count))
{
while (count--)
{
*(dest + count) = *(src + count);
}
}
else
{
while (count--)
{
*dest = *src;
src++;
dest++;
}
}
return p2;
}
int main()
{
int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int i = 0;
int len = sizeof(arr1) / sizeof(arr1[0]);
int *ret = my_memmove(arr1, arr1, 16);
for (i = 0; i < len; i++)
{
printf("%d ", *(ret + i));
}
system("pause");
return 0;
}
最后
以上就是无语大白为你收集整理的C语言:模拟实现memmove的全部内容,希望文章能够帮你解决C语言:模拟实现memmove所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复