前言C 语言中 strcpy / strcmp 等字符串函数只能处理字符串。想要通用拷贝任意类型数组、结构体就要用内存操作函数按字节操作不关心数据类型。本文一次性讲清 4 个常用内存函数用法 区别 模拟实现面试常考。一、4 个内存函数总览 #include string.h memcpy 内存拷贝不处理重叠memmove 内存拷贝处理重叠更安全memcmp 内存比较memset 内存赋值按字节二、memcpy — 不重叠内存拷贝作用从 src 拷贝 num 字节到 dest 。特点按字节拷贝任意类型都能用不处理内存重叠遇到 \0 不停止模拟实现极简版三、memmove — 处理重叠的安全拷贝和 memcpy 用法完全一样。区别能处理内存重叠。什么时候重叠同个数组内部拷贝比如用 memcpy 可能数据被覆盖 memmove 一定安全。模拟实现核心判断方向四、memcmp — 内存比较比较前 num 个字节返回值0ptr1 ptr20相等0ptr1 ptr2模拟实现五、memset — 内存初始化作用把 ptr 前 num 字节逐字节设为 value。最常见坑结果是 0x01010101 不是 1。模拟实现六、一张表总结表格七、面试必问memcpy 和 memmove 区别memcpy 不处理重叠 memmove 处理。memset 能直接把 int 数组设为 1 吗不能它是按字节赋值。内存函数和字符串函数区别字符串函数遇到 \0 停止内存函数按字节数走。