Heim > Backend-Entwicklung > C++ > Warum funktioniert „==' nicht für den Array-Gleichheitsvergleich in C?

Warum funktioniert „==' nicht für den Array-Gleichheitsvergleich in C?

Patricia Arquette
Freigeben: 2024-11-16 11:26:03
Original
467 Leute haben es durchsucht

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

Warum funktioniert der Array-Gleichheitsvergleich mit == nicht?

In C vergleicht der Gleichheitsoperator (==) die Speicheradressen von Arrays und nicht deren Inhalte. Dieses Verhalten kann zu Verwirrung führen, da es sich von der intuitiven Erwartung unterscheidet, Array-Elemente elementweise zu vergleichen.

Bedenken Sie den folgenden Code:

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.";
}
Nach dem Login kopieren

In diesem Code werden zwei Arrays erstellt mit identischem Inhalt. Die Ausgabe besagt jedoch, dass die Arrays nicht gleich sind. Dies liegt daran, dass der ==-Operator die Speicheradressen der Arrays vergleicht, die für jedes Array unterschiedlich sind.

Um einen elementweisen Vergleich von Arrays durchzuführen, kann man entweder eine Schleife oder den std::array verwenden Klasse. Die Klasse std::array bietet eine etwas andere Schnittstelle für die Arbeit mit Arrays und unterstützt den direkten Gleichheitsvergleich.

Beispiel mit einer Schleife:

bool arraysEqual(int *arr1, int *arr2, int size)
{
    for (int i = 0; i < size; ++i)
    {
        if (arr1[i] != arr2[i])
            return false;
    }
    return true;
}
Nach dem Login kopieren

Beispiel mit 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.";
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum funktioniert „==' nicht für den Array-Gleichheitsvergleich in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage