C语言内存函数(一)
一、memcpy使用和模拟实现
1.1.memcpy函数
void * memcpy ( void * destination, const void * source, size_t num );
1.2.memcpy函数的作用
从源指向的内存位置直接将num字节的值复制到由目标指向的内存块中。
这个函数在遇到'\0'的时候并不会停下来
1.3.memcpy函数的使用

代码如下(可自行测试):
#include<stdio.h>
int main() {
int arr1[] = { 0,1,2,3,4,5,6,7,8,9 };
int arr2[10] = { 0 };
memcpy(arr2, arr1, 20);
for (int i = 0; i < 10; i++) {
printf("%d ", arr2[i]);
}
return 0;
}
1.4.memcpy函数的模拟实现

代码如下(可自行测试):
#include <stdio.h>
#include <assert.h>
void* my_memcpy(void* dst, const void* src, size_t count) {
assert(dst && src);
char* d = (char*)dst;
const char* s = (const char*)src;
while (count--) {
*d++ = *s++;
}
return dst;
}
int main() {
int arr1[] = { 0,1,2,3,4,5,6,7,8,9 };
int arr2[10] = { 0 };
my_memcpy(arr2, arr1, sizeof(arr1));
for (int i = 0; i < 10; i++) {
printf("%d ", arr2[i]);
}
return 0;
}
二、memmove使用和模拟实现
2.1.memmove函数
void * memmove ( void * destination, const void * source, size_t num );
2.2.memmove函数的作用
将一块内存块中num字节的值从源指向的位置复制到由目标指向的内存块中。复制过程仿佛使用了中间缓冲区,从而允许目标和源内存区域重叠。
2.3.memmove函数的使用

代码如下(可自行测试):
#include<stdio.h>
int main() {
int arr1[] = { 1,2,3,4,5,6,7,8,9 ,10};
memmove(arr1+2, arr1, 20);
for (int i = 0; i < 10; i++) {
printf("%d ", arr1[i]);
}
return 0;
}
更多推荐



所有评论(0)