Maison  >  Article  >  développement back-end  >  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
Patricia Arquetteoriginal
2024-11-16 11:26:03395parcourir

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.";
}

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;
}

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.";
}

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:
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