C语言memcpy()函数和memmove()函数

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() 没有这样的假设,其拷贝过程类似于先将所有字节拷贝至一个临时区域,再将其拷贝至目的区域。

对于这两个函数而言,它们不知道也不关心数据的类型,只负责从一个位置把给定长度的字节拷贝到另一个位置而已。

猜你喜欢

转载自www.cnblogs.com/HOMEofLowell/p/12430936.html
今日推荐