为什么使用 == 进行数组相等比较不起作用?
在 C 中,相等运算符 (==) 比较内存地址数组,而不是它们的内容。此行为可能会导致混乱,因为它与按元素比较数组元素的直观预期不同。
考虑以下代码:
int main() { int iar1[] = {1, 2, 3, 4, 5}; int iar2[] = {1, 2, 3, 4, 5}; if (iar1 == iar2) cout << "Arrays are equal."; else cout << "Arrays are not equal."; }
在此代码中,创建了两个数组具有相同的内容。但是,输出表明数组不相等。这是因为 == 运算符比较数组的内存地址,每个数组的内存地址都不同。
要执行数组的逐元素比较,可以使用循环或使用 std::array班级。 std::array 类为处理数组提供了稍微不同的接口,并支持直接相等比较。
使用循环的示例:
bool arraysEqual(int *arr1, int *arr2, int size) { for (int i = 0; i < size; ++i) { if (arr1[i] != arr2[i]) return false; } return true; }
使用 std::array 的示例:
#include <array> int main() { std::array<int, 5> iar1 = {1, 2, 3, 4, 5}; std::array<int, 5> iar2 = {1, 2, 3, 4, 5}; if (iar1 == iar2) cout << "Arrays are equal."; else cout << "Arrays are not equal."; }
以上是为什么 C 中的 == 不能用于数组相等比较?的详细内容。更多信息请关注PHP中文网其他相关文章!