比较两个相同长度的int数组的最佳方法是什么?

use*_*734 10 c arrays int compare c99

将int数组b和c与a进行比较的最佳方法是什么?

int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};
Run Code Online (Sandbox Code Playgroud)

b和c只是示例,假设它们可以是0和1的任意组合.

我试图检测与a相同的数组.我用谷歌搜索了一段时间,但没有找到满意的答案.

这是我意识到的初学者问题,谢谢你的耐心等待.

Fre*_*Foo 29

使用标准memcmp功能<string.h>.

memcmp(a, b, sizeof(a)) == 0
Run Code Online (Sandbox Code Playgroud)

每当ab是相等的.

  • 小注意:如果`int`类型中有填充位,`memcmp()`可能会产生假阴性.幸运的是,OP不太可能遇到这样的实现. (3认同)

sth*_*sth 5

使用循环并逐个比较各个元素。


Use*_*ess 5

如果你的意思是

int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};
Run Code Online (Sandbox Code Playgroud)

然后

memcmp(a, b, sizeof(a)); /* returns zero for a match */
memcmp(a, c, sizeof(a)); /* returns nonzero for no match */
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,在C中使用memcmp是不可靠的,因为可能的填充位. (3认同)