C 库函数 - memcpy()
cpulspuls官方描述—<string.h>
描述:
memcpy函数,可以将 num 个字节的值从源指向的位置直接复制到目标指向的内存块。
它的功能很像strcpy,但strcpy只可以复制字符串,而memcpy可以复制一切。
它的返回值只有1个:目标处的地址。
另注意:它的对象应该为2个独立的内存空间,不宜重叠。而对于重叠的内存块,memmove 函数是一种更安全的方法。
声明:
void * memcpy ( void * destination, const void * source, size_t num );
代码实现:
#include <stdio.h>
#include <assert.h>
void My_memcpy(void* to, const void* from, size_t sz)
{
assert(to && from);
void* ret = to;
while (sz--)
{
//强制转换为char类型指针,这样就可以1个字节1个字节的进行copy
*(char*)to = *(char*)from;
to = (char*)to + 1;
from = (char*)from + 1;
}
return ret;
}
int main()
{
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
int arr2[10] = { 0 };
char str1[20] = "This is my memcpy";
char str2[20] = { 0 };
int i = 0;
My_memcpy(arr2, arr1, 40);
My_memcpy(str2, str1, 17);
for (i = 0; i < 10; i++)
{
printf("%d ", arr2[i]);
}
printf("\n%s\n", str2);
return 0;
}