内存函数
以下函数的头文件:string.h
- 针对内存块进行处理的函数
memcpy
函数原型:
void* memcpy(void* destination, const void* source, size_t num);
目标空间地址 源空间地址
-
num,被拷贝的字节个数
-
返回目标空间的起始地址
-
从source函数向后拷贝num字节个数据到目标空间
-
目标空间地址和源空间地址有重叠部分,有重叠内存的拷贝,结果是未定义的
-
C语言标准规定:memcpy可以不负责有重叠内存的拷贝
- 而vs编译器的库函数也可以实现重叠内存的拷贝。
#include <stdio.h>
#include <string.h>
int main()
{
int arr1[20] = {
1, 2, 3, 4, 5, 6 };
int arr2[20] = {
0 };
memcpy(arr2, arr1, sizeof(int) * 5);
for (int i = 0; i < 5; i++)
{
printf("%d ", arr2[i]);
}
return 0;
}
通过函数原型也发现,这个memcpy函数是一个函数参数,函数返回类型都是void无符号类型,这是说明该函数是一个,泛型函数,它可以接收任意类型的参数,使同一个函数能用于多种类型的数据。
该用例说明了,将数组arr1从第一个元素开始的20个字节拷贝到arr2中。
模拟memcpy函数
void* my_memcpy(void* dest, const v