文章目录
- 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语言常用的内存函数完结篇了,如果前面还有没看的函数,记得补一下哦!!!👍👍👍🎇
**学习很难,但坚持一定很酷!!!**🥇🥇🥇