memcmp内存比较函数

news/2025/2/21 4:26:05/

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.ppmy.cn/news/1185927.html

相关文章

轻量封装WebGPU渲染系统示例<5>-多重纹理(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/MultiTexturedCube.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 …

基于单片机的太阳跟踪系统的设计

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、设计的主要内容二、硬件电路设计2.1跟踪控制方案的选择2.1.1跟踪系统坐标系的选择2.2系统总体设计及相关硬件介绍…

一文详解如何从 Oracle 迁移数据到 DolphinDB

Oracle 是一个广泛使用的关系型数据库管理系统,它支持 ACID 事务处理,具有强大的安全性和可靠性,因此被广泛应用于各种企业级应用程序。但是,随着数据规模的增加和业务需求的变化,Oracle 的一些限制和缺点也逐渐暴露出…

自定义组件实现v-model

要使自定义的Vue组件支持v-model&#xff0c;需要实现一个名为value的prop和一个名为input的事件。在组件内部&#xff0c;将value prop 绑定到组件的内部状态&#xff0c;然后在对内部状态进行修改时触发input事件。 自定义UI组件 <template><input :value"va…

RSA加解密

头一次接触算法 啊好困 RSA&#xff08;Rivest-Shamir-Adleman&#xff09;算法是一种非对称加密算法 密钥生成&#xff1a;选择两个大质数p和q&#xff0c;计算它们的乘积n p * q。然后选择一个与φ(n)&#xff08;n的欧拉函数&#xff09;互质的整数e&#xff0c;通常选择65…

骨传导耳机优缺点是什么,这几点骨感耳机的利与弊一定得知道!

随着近几年骨感耳机的风头逐渐兴起&#xff0c;骨感耳机受到了不少人的关注&#xff0c;并且存在很多人对于骨感耳机的利与弊还存在着一定的盲点&#xff0c;下面让我来给大家讲解一下。 骨感耳机的利&#xff1a; 1、不入耳的设计对耳道的损伤更小 骨感耳机采用一种独特的声…

【Java作业自动审批平台】| 后台管理认证授权表实现整体设计

目录 一. &#x1f981; 为什么需要权限管理二. &#x1f981; 设计思想Ⅰ. 需求分析Ⅱ. 数据库设计Ⅲ. Springsecurity配置Ⅳ. 实现用户注册和登录Ⅴ. 实现权限管理 三. &#x1f981; 写在最后四. &#x1f981; 文末福利 大家好&#xff0c;我是狮子&#xff01;这里是《Jav…

k8s修改apiserver证书可用年限

使用 kubeadm 部署的 K8S 集群中&#xff0c;apiserver 证书的默认可用年限只有一年。如果直接用在生产环境&#xff0c;当证书过期后会造成 K8S 集群瘫痪&#xff0c;从而影响现网业务。 1&#xff0c;查看 K8S 集群所有证书存放位置 ls /etc/kubernetes/pki/ apiserver.crt…