1.11
memcpy
void *
memcpy
(
void *
destination
,
const
void *
source
,
size_t
num
);
1,函数
memcpy
从
source
的位置开始向后复制
num
个字节的数据到
destination
的内存位置。
2,这个函数在遇到
'\0'
的时候并不会停下来。
3,如果
source
和
destination
有任何的重叠,复制的结果都是未定义的。
模拟:
循环的两种错误写法:
memcpy不适用与重叠内存的拷贝
原因:强转是临时的。
1.12
memmove
void *
memmove
(
void *
destination
,
const
void *
source
,
size_t
num
);
1,和
memcpy
的差别就是
memmove
函数处理的源内存块和目标内存块是可以重叠的。
2,如果源空间和目标空间出现重叠,就得使用memmove函数处理。
根据源地址和目的地址的起始位置的前后来设置判断。
不同空间的数组,指针大小的判断的结果无关紧要,因为不重叠,走哪一个分支都会完成任务。
1.13
memcmp(字节间的比较)
int
memcmp
(
const
void *
ptr1
,
const
void *
ptr2
,
size_t
num
);
1,
比较从ptr1
和
ptr2
指针开始的
num
个字节
2,返回值如下:
字节间的比较: