Wie vergleiche ich C-Zeiger?
Kürzlich habe ich einen Code geschrieben, um Zeiger wie diesen zu vergleichen:
if(p1+len < p2)
Einige Mitarbeiter meinten jedoch, ich solle so schreiben:
if(p2-p1 > len)
sicher sein. Hier,p1 undp2 sindchar *
Zeiger,len ist eine ganze Zahl. Davon habe ich keine Ahnung. Stimmt das?
EDIT1: natürlichp1 undp2 zeiger auf dasselbe speicherobjekt beim betteln.
EDIT2 : Vor einer Minute habe ich das gefundenScheiße von dieser Frage in meinem Code (ca. 3K Zeilen), weillen
ist so groß, dassp1+len
kann nicht in 4 Bytes des Zeigers speichern, alsop1 + len <p2 istwahrAber das sollte eigentlich nicht so sein, also sollten wir Zeiger wie diesen in vergleicheneine Situation:
if(p2 < p1 || (uint32_t)p2-p1 > (uint32_t)len)