C语言memcpy()函数和memmove()函数
关于 memcpy() 函数,请先看链接。
memcpy() 函数和 memmove() 函数的函数原型如下:
void* memcpy(void * restrict s1, const void * restrict s2, size_t n);
void* memmove(void * s1, const void * s2, size_t n);
两函数作用相似,都是指针 s2 指向的区域拷贝 n 个字节至 s1 指向的区域,并且都返回一个指针指向 s1。
所不同的是 memcpy() 函数的参数带有关键字 restrict
(关键字 restrict 用于限定指针,告知编译器,所有修改该指针所指向内容的操作全部都是基于该指针
的,即不存在其它进行修改操作的途径),在此处可以理解为 memcpy() 函数假设进行拷贝的两个内存区域之间没有重叠,因此如果两个内存区域存在重叠,
memcpy() 可能出错。而 memmove() 没有这样的假设,其拷贝过程类似于先将所有字节拷贝至一个临时区域,再将其拷贝至目的区域。
对于这两个函数而言,它们不知道也不关心数据的类型,只负责从一个位置把给定长度的字节拷贝到另一个位置而已。
原文地址:https://www.cnblogs.com/HOMEofLowell/p/12430936.html
时间: 2024-09-29 17:45:45