打开常用C语言常用内存函数的大门 ——memcmp函数及其模拟实现(完结篇)

文章目录

  • [1. 前言](#1. 前言)
  • [2. memcmp函数](#2. memcmp函数)
    • [2.1 memcmp函数的原型](#2.1 memcmp函数的原型)
    • [2.2 memcmp的返回值](#2.2 memcmp的返回值)
    • [2.2 memcmp的形参](#2.2 memcmp的形参)
    • [2.3 memcmp函数的使用](#2.3 memcmp函数的使用)
  • [3. memcmp函数的模拟实现](#3. memcmp函数的模拟实现)
  • [4. 总结](#4. 总结)

1. 前言

本文是C语言常用内存函数的最后一个函数 ------ memcmp函数。

希望各位观众佬爷们能够学会并灵活的使用这四个常用的内存函数:

内存函数 函数原型 作用
memcpy void* memcpy(void* destination, const void* source, size_t num) 将源空间里的num个字节内容拷贝到目标空间
memmove void* memmove(void* destination, const void* source, size_t num) 将源空间里的num个字节内容拷贝到目标空间(注意与memcpy函数的区别)
memset void* memset(void* ptr, int value, size_t num) 以value的值覆盖所指向目标空间往后的num个字节的内容(包括所指向开始位置)
memcmp int memcmp(const void* ptr1, const void* ptr2, size_t num) 比较两个所指向的内存空间的num个字节的内容。如果提前发现不同的内容时,就终止比较,返回一个非0值。

2. memcmp函数

memcmp函数的作用:比较两个不同数据对象的num个字节的内容。如果提前发现不同的内容时,就终止比较,返回一个非0值。反之,返回0。

2.1 memcmp函数的原型

c 复制代码
int memcmp(const void* ptr1, const void* ptr2, size_t num);

2.2 memcmp的返回值

如果看不懂上述的表格,没有关系,我来给你解释:

取出ptr1和ptr2空间的前num个字节的内容,以字节为单位进行比较。如果ptr1所指向空间的单位字节的值大于ptr2所指向空间的值,那么就返回大于0的值。如果是小于的话,就返回小于0的值。如果是等于的话,就返回0。



2.2 memcmp的形参

形参 类型 作用
ptr1 const void* 指向第一个待比较空间的内容
ptr2 const void* 指向第二个待比较空间的内容
num size_t 指明从开始位置往后比较多少个字节的内容(注:开始的位置就已经算字节的内容了)

2.3 memcmp函数的使用

下面我给出一个案例,分别改变它们比较的字节数的多少,请你判断一下输出的结果(本代码是在VS2022环境下运行的):

结果:

怎么样,你做对了吗。

相信看到这里的读者,已经对这个函数的使用了然于胸了。

那么,又来到了我们熟悉的环节,模拟实现memcmp函数:

3. memcmp函数的模拟实现

这个函数的模拟实现并不难,读者们应该比较容易理解下面给出的代码:

4. 总结

本文讲解了memcmp函数的使用及其模拟实现。另外,本篇也是C语言常用的内存函数完结篇了,如果前面还有没看的函数,记得补一下哦!!!👍👍👍🎇

**学习很难,但坚持一定很酷!!!**🥇🥇🥇

相关推荐
东离与糖宝3 分钟前
金三银四Java校招面经:从双非到大厂Offer,我只准备了这些
java·面试
承渊政道18 分钟前
【优选算法】(实战体会位运算的逻辑思维)
数据结构·c++·笔记·学习·算法·leetcode·visual studio
禾小西24 分钟前
Spring AI :Spring AI的介绍
java·人工智能·spring
Ricky_Theseus26 分钟前
SQL Server 的五种约束类型
数据库·sql·oracle
zjshuster28 分钟前
数据库分库分表的方法论与实操
数据库·adb
愤豆28 分钟前
05-Java语言核心-语法特性--模块化系统详解
java·开发语言·python
bksczm29 分钟前
文件流(fstream)
java·开发语言
NGC_661130 分钟前
Java 线程池阻塞队列与拒绝策略
java·开发语言
一只努力的微服务35 分钟前
【Calcite 系列】深入理解 Calcite 的 AggregateValuesRule
大数据·数据库·calcite·优化规则
小碗羊肉42 分钟前
【从零开始学Java | 第二十二篇】List集合
java·开发语言