int a[10];
int b[10];
memcmp(a, b, sizeof(int) * 10);
memcmp()
只告诉我们哪个内存块更大/更小,因为它只返回 -1,0,+1。
有没有一种方法可以知道 a[]
和 b[]
中匹配元素的数量,然后才发生不匹配。
Ex: a = {1, 2, 3, 4, 5, 6}
b = {1, 2, 4}
此处 memcmp(a, b, sizeof(int)* 3)
将返回 -1。我想得到 2 作为答案
有没有办法在 memcmp
或一些类似的内置函数的帮助下获得匹配元素的数量
最佳答案
我假设您想要一个低级别的答案,因为您一定已经拒绝了使用循环的简单方法。
您可以将内存块 a[0] 到 a[9] 与 b[0] 到 b[9] 进行异或。当且仅当原始数组相等时,生成的内存将是一 block 零。要获得匹配元素的数量,请计算全零位的 int block 的数量。
您可以在汇编程序中非常快速地执行此操作,因为操作非常简单。
关于c - mem 比较数组以获取匹配字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712364/