概述
memcmp
是一个在C语言中的标准库函数,用于进行内存块的字节级别比较。它的原型在 string.h
头文件中声明如下:
int memcmp(const void *ptr1, const void *ptr2, size_t num);
memcmp
函数接受三个参数:
ptr1
:指向要比较的第一个内存块的指针。ptr2
:指向要比较的第二个内存块的指针。num
:要比较的字节数。
该函数将比较 ptr1
和 ptr2
所指向的内存块的前 num
个字节。返回值有以下三种情况:
- 如果两个内存块的前
num
个字节完全相同,则返回0。 - 如果
ptr1
所指向的内存块的前num
个字节按字节顺序小于ptr2
所指向的内存块的对应字节,则返回一个小于0的整数。 - 如果
ptr1
所指向的内存块的前num
个字节按字节顺序大于ptr2
所指向的内存块的对应字节,则返回一个大于0的整数。
memcmp
函数通常用于比较字节数组或内存块,而不仅仅用于字符串比较。在字符串比较中,我们更常使用 strcmp
函数。
示例
#include <stdio.h>
#include <string.h>
int main() {
char array1[] = "Hello";
char array2[] = "Hello";
int result = memcmp(array1, array2, sizeof(array1));
if (result == 0) {
printf("array1 and array2 are equal.\n");
} else {
printf("array1 and array2 are not equal.\n");
}
return 0;
}
在上述示例中,memcmp
函数比较了 array1
和 array2
的所有字节,因为它们是相同的,所以输出 "array1 and array2 are equal."。