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!