0
点赞
收藏
分享

微信扫一扫

memmove函数

头文件:

函数声明:

返回值:

用法:

 从src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

对于int形数据每个有4字节,所以如果要将5个元素复制应要输入20.

对比memcpy , memmove函数可以实现内存重叠拷贝

例子:

#include<stdio.h>
#include<string.h>
int main() {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	memmove(arr+3 , arr , 20);
	int i = 0;
	for (i = 0;i < 10;i++) {
		printf("%d ", arr[i]);
	}
	return 0;
}

 

函数的实现:

#include<assert.h>
void* my_memmove(void* dest, const void* src, size_t count) {
	assert(dest && src);
	void* ret = dest;
	if (src < dest) {
		while (count--) {
			*((char*)dest + count) = *((char*)src + count);
		}
	}
	else {
		while (count--) {
			*(char*)dest = *(char*)src;
			dest = (char*)dest + 1;
			src = (char*)src + 1;
		}
	}
	return ret;
}
举报

相关推荐

0 条评论