Vergleich von Zeigern für Gleichheit: eine exemplarische Vorgehensweise für den C-Standard
In C kann der Vergleich von Zeigern für Gleichheit unkompliziert sein, erfordert jedoch Einhaltung auf spezifische Regeln, die im Sprachstandard festgelegt sind.
Gleichheitsoperator (==, !=)
Für Zeiger desselben Typs liefert der Gleichheitsvergleich mit == oder != intuitive Ergebnisse. Zwei Zeiger sind gleich, wenn sie beide null sind, beide auf dieselbe Funktion zeigen oder beide auf dieselbe Adresse zeigen.
Relationale Operatoren (<, >, <=, >= )
Zeiger desselben Typs können auch mithilfe von Vergleichsoperatoren verglichen werden. Wenn sie auf dasselbe Objekt oder dieselbe Funktion zeigen, vergleichen sie wie erwartet: p<=q und p>=q ergeben true, während pq false ergeben.
Wenn die Zeiger jedoch zeigen auf verschiedene Objekte oder Funktionen beziehen oder wenn eines davon null ist, sind die Ergebnisse relationaler Vergleiche nicht spezifiziert. Dies bedeutet, dass ihr Verhalten von der Implementierung abhängt.
Ausnahmen von der Regel
Array-Elemente: Wenn Zeiger auf Elemente desselben Arrays zeigen , der Zeiger auf das Objekt mit einem höheren Index ist größer.
Gewerkschaftsmitglieder: Wenn Zeiger zeigen auf Mitglieder derselben Union, sie sind nach der Konvertierung in void* gleich.
Andere Arten von Zeigern:
Vorbehalte
Bonus: Standardbibliotheks-Helfer
Die Standardbibliothek stellt die Vorlagenfunktionen std::greater, std::less bereit , std::greater_equal und std::less_equal, die zum Ordnen jeder Art von Zeiger verwendet werden können, auch wenn integrierte Operatoren vorhanden sind kann nicht.
Das obige ist der detaillierte Inhalt vonWie vergleiche ich Zeiger auf Gleichheit und Reihenfolge in C sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!