Maison > développement back-end > C++ > Pourquoi `==` ne fonctionne-t-il pas pour la comparaison de l'égalité des tableaux en C ?

Pourquoi `==` ne fonctionne-t-il pas pour la comparaison de l'égalité des tableaux en C ?

Patricia Arquette
Libérer: 2024-11-16 11:26:03
original
498 Les gens l'ont consulté

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

Pourquoi la comparaison d'égalité de tableau à l'aide de == ne fonctionne-t-elle pas ?

En C , l'opérateur d'égalité (==) compare les adresses mémoire de tableaux, plutôt que leur contenu. Ce comportement peut prêter à confusion, car il diffère de l'attente intuitive de comparer les éléments d'un tableau élément par élément.

Considérez le code suivant :

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.";
}
Copier après la connexion

Dans ce code, deux tableaux sont créés avec un contenu identique. Cependant, la sortie indique que les tableaux ne sont pas égaux. En effet, l'opérateur == compare les adresses mémoire des tableaux, qui sont différentes pour chaque tableau.

Pour effectuer une comparaison élément par élément des tableaux, on peut soit utiliser une boucle, soit utiliser std::array classe. La classe std::array fournit une interface légèrement différente pour travailler avec des tableaux et prend en charge la comparaison directe d'égalité.

Exemple utilisant une boucle :

bool arraysEqual(int *arr1, int *arr2, int size)
{
    for (int i = 0; i < size; ++i)
    {
        if (arr1[i] != arr2[i])
            return false;
    }
    return true;
}
Copier après la connexion

Exemple utilisant 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.";
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal