在比较两个数组时,它如何读取"零"?

Sim*_*mon 0 c arrays compare

int num4[10] = {3,4,8,9};
int num2[10] = {3,8,6,8};

compare2 = memcmp(num4, num2, 4);
Run Code Online (Sandbox Code Playgroud)

为什么compare2的值为零,即使数组不相等?

M.M*_*M.M 8

第三个参数memcmp是字节数,而不是元素数.

你的意思是:

memcmp(num4, num2, 4 * sizeof num4[0]);
Run Code Online (Sandbox Code Playgroud)

您现有的代码仅比较前四个字节.如果您的系统具有4字节的整数(这是常见的),那么您只比较了第一个int.

我使用sizeof num4[0]而不是sizeof(int)使代码仍然有效,即使您稍后更改num4num2成为不同类型的数组.