目录

C语言-部分内存相关的库函数

目录

C语言 部分内存相关的库函数

前言

本文主要分享了部分内存相关的库函数(memcpy , memmove , memcmp , memset)的使用;

图片均来源于cplusplus;

头文件均为        <string.h>;

关于memcpy

结构

https://i-blog.csdnimg.cn/direct/754e40fe8b5f45b8987deb8f4c547b4d.png

第一个是 目标空间起始地址;

第二个是 来源目标起始地址;

第三个是 要拷贝的字节数;

作用

https://i-blog.csdnimg.cn/direct/0a04c56a2ca84dc8a0107cebf5fb0f20.png

意思是 将 num 字节的值从源指向的位置直接复制到目标指向的内存块。

返回值

https://i-blog.csdnimg.cn/direct/e5d5ef9d7dc040e7b3eef5636889c554.png

返回 目标空间起始地址;

注:

1.这里的指针都是 void* ,所以可以接收任意类型的指针,不过使用时需要强制类型转化成自己需要的类型,void* 类型的变量无法直接解引用;

2.这里的来源和目标空间不能有重叠部分;

关于memmove

结构

https://i-blog.csdnimg.cn/direct/ddf1238a94ed48609b366a0c885f01cf.png

第一个参数是 目标空间起始地址;

第二个参数是 来源空间起始地址;

第三个参数是 操作的字节数;

作用

https://i-blog.csdnimg.cn/direct/ca200de462f74af1b6bbb9e805311713.png

翻译过来就是:将 num 字节的值从源指向的位置复制到目标指向的内存块。复制就像使用中间缓冲区一样进行,允许目标和源重叠。

所以,这个函数可以应用于目标和来源空间有重叠部分的情况;

返回值

https://i-blog.csdnimg.cn/direct/db1c2177c933469cbaae868e03e804c9.png

返回 目标空间起始地址;

关于memcmp

结构

https://i-blog.csdnimg.cn/direct/9f71cf2c5d9b402194d0d5756d3c517d.png

第一个参数是 内容1 的指针;

第二个参数是 内容2 的指针;

第三个参数是 要比较的字节数;

作用

https://i-blog.csdnimg.cn/direct/429070e2118244bd89b489f5faf66c8c.png

将 ptr1 指向的内存块的前 num 个字节与 ptr2 指向的前 num 个字节进行比较,如果它们都匹配,则返回零,或者返回一个与零不同的值,表示如果它们不匹配;

比较的具体规则与 strcmp 相同,可以去看上一期博客;

不同的是,memcmp 遇到空字符时不会停止;

返回值

https://i-blog.csdnimg.cn/direct/8a53b03090aa44cd9d2ce1c672a56db6.png

返回值与 strcmp 也类似;

关于memset

结构

https://i-blog.csdnimg.cn/direct/e6c01e155b9e462b9e951988735c99f3.png

第一个参数为 目标地址;

第二个参数为 要设置的内容;

第三个参数为 要设置的字节数;

作用

https://i-blog.csdnimg.cn/direct/267bbb5ed1c441f69c951ebec5340c1f.png

将 ptr 指向的内存块的前 num 个字节设置为指定值(解释为无符号字符)。

返回值

https://i-blog.csdnimg.cn/direct/a2a6162ecec94fd9b0187c2641f14f83.png

返回 目标地址;

:每一个字节都会被修改;

补充

1.字符分类函数(判断是否是对应类型的数据,如果是,返回非零数字;如果不是,返回零)

        函数                 数据类型

        isspace            空白字符(\n , \t 等)

        iscntrl               控制字符

        isdigit               十进制数字

        isxdigit             十六进制数字

        islower             小写字母

        isupper             大写字母

        isalpha             字母

        isalnum            字母或者字符

        ispunct             标点符号

        isgraph             图形字符

        isprint               可打印字符

2.字符转换函数

        tolower        将字母转小写

        toupper       将字母转大写

写在最后

谢谢你看我的文章