首页 > 后端开发 > C++ > 为什么 C 中的 == 不能用于数组相等比较?

为什么 C 中的 == 不能用于数组相等比较?

Patricia Arquette
发布: 2024-11-16 11:26:03
原创
460 人浏览过

Why Does `==` Not Work for Array Equality Comparison in C  ?

为什么使用 == 进行数组相等比较不起作用?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板