memcmp内存比较函数

1.头文件:string.h

2.函数原型:int memcmp(const void *ptr1, const void *ptr2, size_t num)

3.函数功能:比较两块内存中数据的大小

4.参数解释:

比较 ptr1 和 ptr2 两个指针所指向的两块内存中的前 num 个字节

5.返回值:

逐字节比较

当ptr1指针指向的内存中的数据 小于 ptr2指针指向的内存中的数据 ,返回 -1

当ptr1指针指向的内存中的数据 等于 ptr2指针指向的内存中的数据 ,返回 0

当ptr1指针指向的内存中的数据 大于 ptr2指针指向的内存中的数据 ,返回 1

6.实例代码:

memcmp函数逐字节比较时,只根据第一次不相同的字节来返回结果值

例如在比较nums3和nums4中的数据时,虽然nums3中后三个数据全部比nums4中后三个数据大,但是nums3的第二个数据小于nums4的第二个数据,因此返回-1

int nums1[] = { 1,2,3,4,5,6,7,8,9 };
int nums2[] = { 1,2,3,4,9 };
printf("%d\n", memcmp(nums1, nums2, sizeof(int) * 4));//0,比较前4个数据
printf("%d\n", memcmp(nums1, nums2, sizeof(int) * 5));//-1,比较前5个数据
 int nums3[] = { 1,0,3,3,3 };int nums4[] = { 1,2,0,0,0 };printf("%d\n", memcmp(nums3, nums4, sizeof(int) * 5));//-1,比较前5个数据

可以不比较完整的一个数据,那么就要看数据的存储是大端存储还是小端存储

我的机器存储是小端存储,那么nums1中的数据存储:01 00 00 00 02 00 00 00 04 00 00 00

                                                   nums2中的数据存储:01 00 00 00 02 00 00 00 03 00 00 00

只比较前9个字节,就是比较到加粗字节处(04 和 03),因此返回结果为1

int nums5[] = { 1,2,4 };
int nums6[] = { 1,2,3 };
printf("%d\n", memcmp(nums5, nums6, 9));//1,比较前9个字节

 memcmp函数可以比较任意数据类型(比较结构体等数据不太好观察,此处不做代码演示)

char arr1[] = "abcdeg";
char arr2[] = "abcdef";
printf("%d\n", memcmp(arr1, arr2, 6));//1,比较前6个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/123886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钡铼技术 工控机中的X86和ARM处理器:哪个更具可扩展性?

X86和ARM是两种不同的处理器架构,它们在工控机中的应用也有所不同。 X86架构的处理器是英特尔公司和AMD公司生产的,它们主要应用于个人电脑和服务器等领域。X86架构的处理器具有良好的通用性和兼容性,可以运行各种操作系统和应用软件。X86架…

做外贸的你是不是也怕遇到麻烦的客户

最近遇到两个客户,可以说还未开始真正的沟通,就已经心里开始打怵,打怵的原因也无非是各种理由上的不匹配。 当我们觉得一件事情不可能做成的时候,那么不能做成的原因就会不断的涌现出来,进而会让我们自己在谈判的时候…

堆栈与队列算法-以链表来实现堆栈

目录 堆栈与队列算法-以链表来实现堆栈 C代码 堆栈与队列算法-以链表来实现堆栈 虽然以数组结构来制作堆栈的好处是制作与设计的算法都相当简单,但若堆栈本身是变动的话,则数组大小无法事先规划声明。这时往往必须考虑使用最大可能性的数组空间&#…

Django 社区志愿者管理系统

摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统,主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…

钢琴培训答题服务预约小程序的效果怎样

很多家长都会从小培养孩子的兴趣,钢琴便是其中热度较高的一种,而各城市也不乏线下教育培训机构,除了青少年也有成年人参加培训,市场教育高需求下,需要商家不断拓展客户和转化。 那么通过【雨科】平台制作钢琴培训服务…

中国卖家的出路:TikTok电商重塑东南亚市场

2023年10月4日,印尼政府发布了一则重要公告,宣布不再允许社交媒体作为商品销售平台。这一决策直接影响了TikTok在印尼的电商业务,迫使该平台关闭了其印尼市场的电商运营。 对于TikTok电商而言,印尼市场一直占据着重要地位&#x…

【常见NodeJS基础面试题和答案(代码已验证)】

文章目录 常见NodeJS基础面试题和答案**1、你了解 Node. js吗?****2、Node. js的使用场景是什么?****3、为什么要用 Node. js?****4、Node. js有哪些全局对象?****5、process有哪些常用方法?****6、console有哪些常用方…

最短路径:迪杰斯特拉算法

简介 英文名Dijkstra 作用&#xff1a;找到路中指定起点到指定终点的带权最短路径 核心步骤 1&#xff09;确定起点&#xff0c;终点 2&#xff09;从未走过的点中选取从起点到权值最小点作为中心点 3&#xff09;如果满足 起点到中心点权值 中心点到指定其他点的权值 < 起…

[论文阅读]Ghost-free High Dynamic Range Imaging with Context-aware Transformer

多帧高动态范围成像&#xff08;High Dynamic Range Imaging, HDRI/HDR&#xff09;旨在通过合并多幅不同曝光程度下的低动态范围图像&#xff0c;生成具有更宽动态范围和更逼真细节的图像。如果这些低动态范围图像完全对齐&#xff0c;则可以很好地融合为HDR图像&#xff0c;但…

RTMP直播在虚拟数字人场景使用

虚拟数字人&#xff08;Virtual Digital Human&#xff09;&#xff0c;指的是一种基于数字技术创建的虚拟人物&#xff0c;他们有自己的外貌、声音&#xff0c;甚至是性格。虚拟数字人通常是通过计算机图形学、人工智能和其他先进技术来实现的。人们可以与这些虚拟数字人进行交…

Xamarin.Forms更改AndroidManifest.xml导致错误:没有兼容的代码在线程上运行

想在APP中加一个打开摄像头的功能&#xff0c;按照该博主的方法&#xff1a;https://blog.csdn.net/zhenweied09/article/details/82287761 设置好后&#xff0c;再运行就出现上图的错误&#xff0c;于是查找原因&#xff0c;定位到是更改AndroidManifest.xml文件导致的&#…

QMI8658A_QMC5883L(9轴)-EVB 评估板

1. 描述 QMI8658A_QMC5883L(9轴)-EVB 评估板是一款功能强大的9轴IMU传感器&#xff0c;它利用了QMA8658A 内置的3轴加速度计和3轴陀螺仪&#xff0c;同时结合QMC5883L的3轴地磁数据&#xff0c;来测量物体在三维空间中的角速度和加速度&#xff08;严格意义上的IMU只为用户提供…

Flash模拟EEPROM原理浅析

根据ST的手册&#xff0c;我们可以看到&#xff0c;外挂EEPROM和Dflash模拟EEPROM&#xff0c;区别如下&#xff1a; 很明显&#xff0c;模拟EEprom的写入速度要远远快于外挂eeprom(有数据传输机制)&#xff1b; 其次&#xff0c;外挂EEPROM不需要擦除即可实现写入数据&#xf…

Wpf 使用 Prism 实战开发Day03

一.实现左侧菜单绑定 效果图: 1.首先需要在项目中创建 mvvm 的架构模式 创建 Models &#xff0c;放置实体类。 实体类需要继承自Prism 框架的 BindableBase&#xff0c;目的是让实体类支持数据的动态变更! 例如: 系统导航菜单实体类 / <summary>/// 系统导航菜单实体类…

【Python学习】—面向对象(九)

【Python学习】—面向对象&#xff08;九&#xff09; 一、初识对象 类中不仅可以定义属性来记录数据&#xff0c;也可以定义函数&#xff0c;用来记录行为&#xff0c;类中定义的属性&#xff08;变量&#xff09;我们称之成员变量&#xff0c;类中定义的行为&#xff08;函数…

【多态-动态绑定-向上转型-抽象类】

文章目录 静态绑定动态绑定多态的具体实现向上转型多态的优缺点抽象类抽象类的作用 总结 静态绑定 重载就是典型例子 动态绑定 多态的具体实现 //多态 class Animal{public String name;public int age;//无参构造方法public Animal() {}//有参构造方法public Animal(Strin…

MySQL Server 5.5 软件和安装配置教程

MySQL 5.5.58&#xff08;32/64位&#xff09;下载链接&#xff1a; 百度网盘&#xff1a;百度网盘 请输入提取码 提取密码&#xff1a;7act 软件简介&#xff1a; MySQL 是由瑞典MySQL AB 公司开发一个关系型数据库管理系统&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最…

代码没注释?一个方法几百行?

干程序员的都有接收别人的代码的经历&#xff0c;大部分时候&#xff0c;我们都会偷偷骂一句“这人是傻逼吧&#xff0c;这代码写的这么烂&#xff01;” “一个方法写几百行&#xff0c;还没有注释&#xff0c;鬼知道写的什么东西&#xff01;” 现在&#xff0c;你不需要为…

__707设计链表

单向链表设计 package 日常Java程序测试.代码随想录.链表;public class __707设计链表__单向链表设计 {class MyLinkedList {//我们首先需要自己定义属性出来int val;MyLinkedList next;int size; //记录链表大小//MyLinkedList() 初始化 MyLinkedList 对象。public MyLinke…

2.flink编码第一步(maven工程创建)

概述 万里第一步&#xff0c;要进行flink代码开发&#xff0c;第一步先整个 flink 代码工程 flink相关文章链接 flink官方文档 两种方式 一种命令行 mvn 创建&#xff0c;另一种直接在 idea 中创建一个工程&#xff0c;使用 mvn 的一些配置 mvn命令行创建 mvn 创建flink工程&…