当前位置: 首页 > news >正文

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       将字母转大写

写在最后

谢谢你看我的文章

http://www.dtcms.com/a/356077.html

相关文章:

  • 广东省省考备考(第八十九天8.28)——判断推理(听课后强化训练)
  • 事务的五大状态
  • QT LInux 开发中一些常用的方法
  • CVPR小模型创新点深度分析:小VLM化身精准向导,大模型多模态推理效率全面加速,性能突破不再依赖算力堆叠
  • 8.28作业
  • Android 编写高斯模糊功能
  • Github上传READ.md后出现不识别换行符的问题
  • Shell编程入门到实战:从基础语法到自动化脚本
  • 网络是怎样连接的,笔记整理
  • C语言知识点补充(链表和队列)
  • 8.变量和数据类型
  • 浏览器访问 ASP.NET Core wwwroot 目录下静态资源的底层实现
  • 多线程 线程池 并发
  • 机器视觉学习-day08-图像缩放
  • MBA/EMBA毕业论文写作总结
  • 第20章|轻松实现远程控制
  • NumPy 2.x 完全指南【三十二】通用函数(ufunc)之数学运算函数
  • 面试tips--JVM(1)--对象分配内存的方式TLAB
  • CTFshow系列——命令执行web61-68
  • C++之多态篇
  • 君正T31学习(四)- MT7682+VLC出图
  • 【python】python进阶——as关键字
  • 程序代码篇---类
  • SpringCloud Alibaba Nacos 注册中心/配置中心
  • SpringBoot 配置文件在运维开发中的应用
  • 基于springboot的商业店铺租赁系统
  • 在 Vue 前端(Vue2/Vue3 通用)载入 JSON 格式的动图
  • 校园文化活动管理系统设计与实现(代码+数据库+LW)
  • web前端知识——第一阶段
  • 【buildroot】【1. Buildroot版本与Linux内核调试对应关系】