1、memcpy函数
函数介绍
1.语法: void * memcpy ( void * destination, const void * source, size_t num );
2.
功能:拷贝内存块
返回:destination地址被返回(destination is returned.)
说明:
1.将 num 字节的值从源指向的位置直接复制到目标指向的内存块。
2.源指针和目标指针指向的对象的基础类型与此函数无关;结果是数据的二进制副本。
3.该函数不检查源中的任何终止 null 字符 - 它始终准确复制 num 个字节。
4.为避免溢出,目标参数和源参数指向的数组的大小应至少为 num 个字节,并且不应重叠 。要点:
1.函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置
2.这个函数在遇到'\0'的时候不会停下来
3.如果source和destination有任何的重叠,复制的结果都是未定义的
函数模拟及分析
函数模拟:
示例原理分析:
对字符型
对整型
2.strstr函数
函数介绍:
1.语法: char * strstr ( char * str1, const char * str2 );
2.
功能:查找子字符串
返回:指向 str1 中指定的整个字符序列的 str2 中第一次出现的指针,如果 str1 中不存在该序列,则指向 null 指针。(A pointer to the first occurrence in str1 of the entire sequence of characters specified in str2, or a null pointer if the sequence is not present in str1.)
说明:返回指向 str2 中第一次出现的 str1 的指针,如果 str2 不是 str1 的一部分,则返回一个null 指针。
匹配过程不包括终止 null 字符,但它会停止到此为止。
函数模拟及分析
函数模拟:
示例原理分析:
3.memmove函数
函数介绍
1.语法: void * memmove ( void * destination, const void * source, size_t num );
2.
功能:移动内存块(Move block of memory)
返回:返回destination地址(destination is returned)
说明:将 num 字节的值从源指向的位置复制到目标指向的内存块。复制就像使用中间缓冲区一样进行,允许目标和源重叠。
源指针和目标指针所指向的对象的基础类型与此函数无关;结果是数据的二进制副本。
该函数不检查源中的任何终止 null 字符 - 它始终准确复制 num 个字节。
为避免溢出,目标参数和源参数所指向的数组的大小应至少为 num 个字节。3.要点:
*和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的
*如果源空间和目标空间出现重叠,就得使用memmove函数处理
函数模拟及分析
函数模拟:
示例及原理分析: