Heim >Backend-Entwicklung >C++ >Warum führt der Vergleich von Arrays mit dem ==-Operator in C und C oft zu „ungleich'?

Warum führt der Vergleich von Arrays mit dem ==-Operator in C und C oft zu „ungleich'?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 22:21:03251Durchsuche

Why does comparing arrays using the == operator in C and C   often result in

Array-Gleichheitsvergleich mit dem ==-Operator

Beim Vergleich von Arrays mit dem ==-Operator ist es wichtig, den Unterschied zwischen Zeigerabfall und zu verstehen elementweiser Vergleich. Standardmäßig zerfallen Arrays in C und C in Zeiger auf ihre ersten Elemente. Dies wird als Zeigerzerfall bezeichnet.

Im bereitgestellten Codeausschnitt:

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

Beim Vergleich von iar1 und iar2 mit == zerfallen beide Arrays in Zeiger auf ihre ersten Elemente. Da iar1 und iar2 zwei separate Arrays im Speicher sind, haben diese Zeiger unterschiedliche Werte. Folglich wird der Vergleich als falsch (ungleich) ausgewertet.

Um einen elementweisen Vergleich der Arrays durchzuführen, kann man entweder eine Schleife schreiben, die jedes Element einzeln vergleicht, oder die Vorlage std::array von verwenden die Standard-Vorlagenbibliothek (STL). Die std::array-Vorlage bietet elementweise Vergleichsfunktionen.

std::array<int, 5> iar1{1, 2, 3, 4, 5};
std::array<int, 5> iar2{1, 2, 3, 4, 5};

if (iar1 == iar2) {
    // Arrays contents are the same
} else {
    // Arrays contents are not the same
}

In diesem Codeausschnitt führt der ==-Operator einen elementweisen Vergleich der Arrays durch und die Ausgabe gibt an, ob der Inhalt von Die Arrays sind gleich oder nicht.

Das obige ist der detaillierte Inhalt vonWarum führt der Vergleich von Arrays mit dem ==-Operator in C und C oft zu „ungleich'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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