C语言——内存函数
目录
一,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,所以返回一个负数
更多推荐

所有评论(0)