C语言 部分内存相关的库函数
前言
本文主要分享了部分内存相关的库函数(memcpy , memmove , memcmp , memset)的使用;
图片均来源于cplusplus;
头文件均为 <string.h>;
关于memcpy
结构
第一个是 目标空间起始地址;
第二个是 来源目标起始地址;
第三个是 要拷贝的字节数;
作用
意思是 将 num 字节的值从源指向的位置直接复制到目标指向的内存块。
返回值
返回 目标空间起始地址;
注:
1.这里的指针都是 void* ,所以可以接收任意类型的指针,不过使用时需要强制类型转化成自己需要的类型,void* 类型的变量无法直接解引用;
2.这里的来源和目标空间不能有重叠部分;
关于memmove
结构
第一个参数是 目标空间起始地址;
第二个参数是 来源空间起始地址;
第三个参数是 操作的字节数;
作用
翻译过来就是:将 num 字节的值从源指向的位置复制到目标指向的内存块。复制就像使用中间缓冲区一样进行,允许目标和源重叠。
所以,这个函数可以应用于目标和来源空间有重叠部分的情况;
返回值
返回 目标空间起始地址;
关于memcmp
结构
第一个参数是 内容1 的指针;
第二个参数是 内容2 的指针;
第三个参数是 要比较的字节数;
作用
将 ptr1 指向的内存块的前 num 个字节与 ptr2 指向的前 num 个字节进行比较,如果它们都匹配,则返回零,或者返回一个与零不同的值,表示如果它们不匹配;
比较的具体规则与 strcmp 相同,可以去看上一期博客;
不同的是,memcmp 遇到空字符时不会停止;
返回值
返回值与 strcmp 也类似;
关于memset
结构
第一个参数为 目标地址;
第二个参数为 要设置的内容;
第三个参数为 要设置的字节数;
作用
将 ptr 指向的内存块的前 num 个字节设置为指定值(解释为无符号字符)。
返回值
返回 目标地址;
注:每一个字节都会被修改;
补充
1.字符分类函数(判断是否是对应类型的数据,如果是,返回非零数字;如果不是,返回零)
函数 数据类型
isspace 空白字符(\n , \t 等)
iscntrl 控制字符
isdigit 十进制数字
isxdigit 十六进制数字
islower 小写字母
isupper 大写字母
isalpha 字母
isalnum 字母或者字符
ispunct 标点符号
isgraph 图形字符
isprint 可打印字符
2.字符转换函数
tolower 将字母转小写
toupper 将字母转大写
写在最后
谢谢你看我的文章