文章目錄
- 1. 前言
- 2. memcmp函數
- 2.1 memcmp函數的原型
- 2.2 memcmp的返回值
- 2.2 memcmp的形參
- 2.3 memcmp函數的使用
- 3. memcmp函數的模擬實現
- 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函數的原型
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語言常用的內存函數完結篇了,如果前面還有沒看的函數,記得補一下哦!!!👍👍👍🎇
**學習很難,但堅持一定很酷!!!**🥇🥇🥇