打開常用C語言常用內存函數的大門 ——memcmp函數及其模擬實現(完結篇)

文章目錄

  • 1. 前言
  • 2. memcmp函數
    • 2.1 memcmp函數的原型
    • 2.2 memcmp的返回值
    • 2.2 memcmp的形參
    • 2.3 memcmp函數的使用
  • 3. memcmp函數的模擬實現
  • 4. 總結

1. 前言

本文是C語言常用內存函數的最后一個函數 —— memcmp函數。

希望各位觀眾佬爺們能夠學會并靈活的使用這四個常用的內存函數:

內存函數函數原型作用
memcpyvoid* memcpy(void* destination, const void* source, size_t num)將源空間里的num個字節內容拷貝到目標空間
memmovevoid* memmove(void* destination, const void* source, size_t num)將源空間里的num個字節內容拷貝到目標空間(注意與memcpy函數的區別)
memsetvoid* memset(void* ptr, int value, size_t num)以value的值覆蓋所指向目標空間往后的num個字節的內容(包括所指向開始位置)
memcmpint memcmp(const void* ptr1, const void* ptr2, size_t num)比較兩個所指向的內存空間的num個字節的內容。如果提前發現不同的內容時,就終止比較,返回一個非0值。

2. memcmp函數

memcmp函數的作用:比較兩個不同數據對象的num個字節的內容。如果提前發現不同的內容時,就終止比較,返回一個非0值。反之,返回0。

2.1 memcmp函數的原型

memcmp函數的原型

int memcmp(const void* ptr1, const void* ptr2, size_t num);

2.2 memcmp的返回值

memcmp的返回值
如果看不懂上述的表格,沒有關系,我來給你解釋:

取出ptr1和ptr2空間的前num個字節的內容,以字節為單位進行比較。如果ptr1所指向空間的單位字節的值大于ptr2所指向空間的值,那么就返回大于0的值。如果是小于的話,就返回小于0的值。如果是等于的話,就返回0。

 小于的情況
等于的情況
大于0的情況

2.2 memcmp的形參

形參類型作用
ptr1const void*指向第一個待比較空間的內容
ptr2const void*指向第二個待比較空間的內容
numsize_t指明從開始位置往后比較多少個字節的內容(注:開始的位置就已經算字節的內容了)

2.3 memcmp函數的使用

下面我給出一個案例,分別改變它們比較的字節數的多少,請你判斷一下輸出的結果(本代碼是在VS2022環境下運行的):
memcmp函數練習
結果:
答案
怎么樣,你做對了嗎。

相信看到這里的讀者,已經對這個函數的使用了然于胸了。

那么,又來到了我們熟悉的環節,模擬實現memcmp函數:

3. memcmp函數的模擬實現

這個函數的模擬實現并不難,讀者們應該比較容易理解下面給出的代碼:
模擬實現
模擬實現

4. 總結

本文講解了memcmp函數的使用及其模擬實現。另外,本篇也是C語言常用的內存函數完結篇了,如果前面還有沒看的函數,記得補一下哦!!!👍👍👍🎇

**學習很難,但堅持一定很酷!!!**🥇🥇🥇

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21990.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21990.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21990.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

平板顯示LED背光芯片OC6700,輸入3.6V~60V,升壓型 LED 恒流驅動器

概述 OC6700是一款內置60V功率NMOS高效率、高精度的升壓型大功率LED恒流驅動芯片。OC6700采用固定關斷時間的控制方式,關斷時間可通過外部電容進行調節,工作頻率可根據用戶要求而改變。OC6700通過調節外置的電流采樣電阻,能控制高亮度LED燈的…

如何優化 Java 程序的性能?

優化 Java 程序的性能可以從多個方面入手,以下是一些常見的優化方法: 使用合適的數據結構:選擇合適的數據結構可以提高程序的效率。例如,使用 HashMap 而不是 ArrayList 來存儲大量的鍵值對數據。 減少對象的創建和銷毀&#xff…

Kylin入門教程介紹

Kylin入門教程可以概括為以下幾個主要步驟: 一、Apache Kylin簡介 Apache Kylin是一個開源的分布式分析引擎,它提供Hadoop之上的SQL接口及多維分析(OLAP)能力,以支持超大規模數據。最初由eBay Inc.開發并貢獻至開源社…

vue2組件封裝+elementUI

1.VUE2圖片上傳封裝 使用 <ImageUpload v-model"picUrl" :fileSize"0" getImg"getImg"></ImageUpload> 封裝代碼 <template><div class"component-upload-image"><el-uploadmultiple:action"uplo…

react 合成事件

React合成事件-CSDN博客 當然&#xff0c;很高興為你解釋React中的合成事件概念&#xff0c;非常適合React初學者理解。 想象一下&#xff0c;你正在組織一場派對&#xff0c;為了讓派對順利進行&#xff0c;你需要管理各種活動&#xff0c;比如游戲、音樂和食物分配。但是&a…

C語言之指針進階(5),sizeof和strlen的數組計算以及指針運算筆試難題詳解

目錄 前言 一、sizeof和strlen 的區分比較 二、sizeof,strlen與數組的計算 三、指針運算&#xff0c;筆試難題解析 總結 前言 本文作為指針進階的最后一篇文章&#xff0c;給大家帶來了豐富的例題&#xff0c;這其中包括區分比較sizeof和strlen計算各種花樣的數組指針表達式…

Redis的SDS數據結構解決C語言字符串缺陷

redis設計了SDS這一數據結構來表示字符串而不是使用c語言的字符串&#xff1a;字符數組 那么redis為什么要大費周章自己設計字符串呢&#xff1f; 答案是C語言字符串有缺陷 1.獲取字符串長度&#xff0c;需要遍歷字符數組&#xff0c;時間復雜度是O&#xff08;N&#xff09…

Springboot vue3 elementplus 景點評論數據分析與可視化系統源碼

源碼鏈接 系統演示:鏈接&#xff1a;https://pan.baidu.com/s/1J056R4rYji_mc4gwteZEzg?pwdnua4

關于Linux系統用戶和用戶組的使用

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

教程 | 在 Navicat 17 中管理連接

Navicat 17 提供了比以往更多的連接數據庫實例的方式。除了傳統的連接字符串方式以外&#xff0c;Navicat 17 還支持 URI 連接&#xff0c;無論身在何處&#xff0c;都可以輕松地通過 URI 訪問對象。另外&#xff0c;還有一個新的管理連接功能&#xff0c;即允許你通過一個以用…

【LeetCode】39.組合總和

組合總和 題目描述&#xff1a; 給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target &#xff0c;找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 &#xff0c;并以列表形式返回。你可以按 任意順序 返回這些組合。 candidates 中的 同一個…

高中數學:平面向量-常考題型匯總

一、數量積運算 例題1 解析 首先&#xff0c;為了化簡運算過程&#xff0c;我們把OA、OB、OC向量記作a、b、c向量。 其次&#xff0c;充分利用已知條件&#xff0c;進行消元&#xff0c;兩邊平方&#xff0c;可以消除一個向量。 a → \mathop{a}\limits ^{\rightarrow} a→ *…

【簡單探索微軟Edge】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…

(delphi11最新學習資料) Object Pascal 學習筆記---第14章泛型第2節(Object Pascal中的泛型)

14.2 Object Pascal中的泛型 ? 在前面的例子中&#xff0c;我們已經看到了如何在Object Pascal中定義和使用泛型類。我決定在深入討論這個非常重要但又相當復雜的技術細節之前&#xff0c;通過一個例子來介紹泛型這一特性。在從語言角度討論泛型之后&#xff0c;我們將列舉更…

Hadoop文件存儲格式

1. TextFile 默認格式&#xff0c;存儲方式為行存儲&#xff0c;數據不做壓縮&#xff0c;磁盤開銷大&#xff0c;數據解析開銷大。可結合 Gzip、Bzip2 使用(系統自動檢查&#xff0c;執行查詢時自動解壓)&#xff0c;但使用 這種方式&#xff0c;壓縮后的文件不支持 split&am…

2024.6.3總結1100

今天面試了一家廣西電信公司&#xff0c;然后受到武漢華為的hr的電話溝通&#xff0c;如果沒意外的話&#xff0c;下周就能收到offer了。 求職也算是踏入社會的第一步了&#xff0c;經過兩個月的求職過程&#xff0c;我除了關于求職方面的技巧&#xff0c;也擴展了我的認知。 …

R語言安裝caret包報錯

R語言安裝caret包報錯&#xff1a;Error: package or namespace load failed for ‘caret’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck vI[[i]]): 不存在叫‘recipes’這個名字的程輯包 https://rbasics.org/packages/caret-package-in-r/ R版本的問題&…

商業新聞|你還在用傳統搜索引擎嗎?

??今天是2024年第22周 這是Yura「輸出倒逼輸入」計劃的第11篇文章 全年進度&#xff1a;11/52 01 AI搜索為什么沒超過傳統搜索&#xff1f; 生成式AI在搜索引擎領域掀起了一輪又一輪的波瀾&#xff0c;但是一年多過去了&#xff0c;不管是必應還是perplexity都并沒有動搖Goog…

深度解讀GPT基本原理

GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一種基于Transformer架構的生成式預訓練模型&#xff0c;其核心在于通過大規模無監督學習來捕捉語言知識和模式&#xff0c;并通過微調來適應各種下游任務。以下是GPT基本原理的詳細解讀&#xff1a; 1.Trans…

pandas習題 036:選擇 DataFrame 的多個列

有以下一個 DataFrame&#xff0c;請從中選擇 name 和 english 這兩列形成一個 DataFrame。 import pandas as pddata {name: [Alice, Bob, Charlie, David, Eve],grade: [10, 11, 10, 12, 11],math: [90, 85, 92, 88, 95],english: [85, 92, 88, 90, 92],science: [92, 90, …