memcmp函数源码
时间: 2023-10-18 22:07:04 浏览: 137
AppServerCtrl,c语言memcmp源码,c语言项目
`memcmp()` 函数用于比较两个内存区域的大小。它返回值为 0 表示两个内存区域相等,返回值小于 0 表示第一个内存区域小于第二个内存区域,返回值大于 0 表示第一个内存区域大于第二个内存区域。
下面是 `memcmp()` 函数的源码实现:
```c
int memcmp(const void* ptr1, const void* ptr2, size_t num) {
const unsigned char* p1 = (const unsigned char*) ptr1;
const unsigned char* p2 = (const unsigned char*) ptr2;
int result = 0;
for (size_t i = 0; i < num && result == 0; i++) {
if (p1[i] < p2[i]) {
result = -1;
} else if (p1[i] > p2[i]) {
result = 1;
}
}
return result;
}
```
该函数接收三个参数:指向内存区域 1 的指针 `ptr1`,指向内存区域 2 的指针 `ptr2`,以及要比较的字节数 `num`。
函数首先将指针 `ptr1` 和 `ptr2` 分别转换为 `unsigned char*` 类型的指针,以便能够以字节为单位进行比较。
然后,函数使用一个循环来比较两个内存区域中的每个字节。如果 `p1` 中的字节小于 `p2` 中的字节,那么函数返回 `-1`。如果 `p1` 中的字节大于 `p2` 中的字节,那么函数返回 `1`。如果两个字节相等,则函数继续比较下一个字节。
如果循环结束后仍然没有找到不同的字节,则说明两个内存区域相等,函数返回 `0`。
阅读全文