这个函数在C语言的底层优化的渣都不剩了,直接就是封装了好了指令,我们如果要实现它不在乎效率的话还是很简单
void my_memcpy(void* Str1, void* Str2, size_t Size) { unsigned char* str1_ = (unsigned char*)Str1; unsigned char* str2_ = (unsigned char*)(Str2); while(Size) { *str1_++ = *str2_++; --Size; } }
得益与void*,我们可以处理任何数据类型,然后强转unsigned char进行一个一个字节的操作拷贝即可
测试代码如下
int main() { char ch[] = "66"; char ch2[3]; my_memcpy(ch2, ch, 3); printf("%s\n", ch2); int num[5] = { 1,2,3,4,5 }; int num2[5]; my_memcpy(num2, num, 20); for (int i = 0; i < 5; i++) printf("%d ", num2[i]); system("pause"); }
自己实现memcpy
于 2022-05-13 09:37:38 首次发布