目录

一,memcpy的使用和模拟实现

1,memcpy的使用 

2,memcpy的模拟实现

二,memmove的使用和模拟实现

1,memmove的使用

2,memmove的模拟实现

三,memset函数的使用

四,memcmp函数的使用


一,memcpy的使用和模拟实现

1,memcpy的使用 

核心功能:实现对任意类型数据的拷贝

头文件:#include <string.h>

语法:void* memcpy(void* destination , const void* source , size_t  num)

1,函数从source处,复制num个字节到destination的地址中

2,函数遇到'\0'不会停下

3,对于destination与source有重叠元素的情景不适用

4,返回值为地址destination

运用实例:

打印结果:1 2 3 4 5

2,memcpy的模拟实现

二,memmove的使用和模拟实现

1,memmove的使用

核心功能:与memcpy类似,可以实现对不同数据的拷贝。与memcpy的区别在于memmove可以对源内存块和目标内存块的重叠情况进行处理。

头文件:#include <string.h>

语法:void* memmove(void* destination,const void* source, size_t num)

返回值为地址destination

运用实例

运行结果:1 2 1 2 3 4 5 8 9 10

2,memmove的模拟实现

三,memset函数的使用

核心功能:将指定内存块的前n个字节统一设置成单个字符或数值。

头文件:#include <string.h>

语法:void* memset(void* ptr,int value,size_t num)

ptr为操作对象的指针

value为要设置的值

num为要设置的字节数

运用展示:

运行结果:xxxxx world

四,memcmp函数的使用

核心功能:对两个内存块逐字节进行比较前n个字节,按照二进制的ASCII码值进行比较,返回结果为整数,不会因为'\0'而终止。

头文件:#include <string.h>

语法:int memcmp(const void* ptr1,const void* prt2,size_t num)

num表示字节数,并非元素的个数。

当ptr1大于ptr2时,返回一个大于0的数

当ptr1等于ptr2时,返回0

当ptr1小于prt2时,返回一个小于0的数

运用实例:

运行结果为:-1

分析:前20个字节的内容都一样,第二十一个字节不一样,根据小端存储规则:arr1中的第21个字节内容为06,arr2中为08,所以返回一个负数 

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐