Immer der Unterschied zwischen beiden Speicher-Adressen

Habe ich die Speicher-Adresse von einem int *:0xbfde61e0. Ich habe auch noch eine Speicher-Adresse (das ist auch int *. Wie kann ich berechnen, den Unterschied zwischen den beiden zu verwenden wie ein offset zwischen den beiden Standorten?

sollten Sie suchen für die "nach-Arithmetik"
Obwohl die Antworten, die Sie bekommen, werden wahrscheinlich in der Praxis arbeiten, sollten Sie sich bewusst sein, dass, wenn die zwei Eingabe-Zeiger deuten nicht auf Elemente des gleichen Arrays, das Ergebnis der Subtraktion Ihnen ist nicht definiert. Wenn Sie beide Zeiger in einen int-array, das Ergebnis der Subtraktion wird in Einheiten von sizeof(int), nicht bytes.
grundsätzlich gilt: tun Sie das nicht. Wenn Sie möchten, erkennen die Größe eines Arrays mit, bitte: tun Sie sich einen gefallen und pass die Größe getrennt.
Wenn beide Speicher-Adressen, subtrahieren Sie wird gut funktionieren. Die Ergebnis ist nicht garantiert nützlich sein, in jeglicher Weise oder form, aber die Bedienung sollte gut funktionieren
Der standard fordert, diese als "undefined behavior", was bedeutet, dass eine konforme Implementierung darf Ertrag das Ergebnis, die Sie erwarten sind, oder dump core, oder senden Sie böse E-Mail an Ihren Chef. Wie ich schon sagte, ist es wahrscheinlich, um die Arbeit in der Praxis, aber es ist gut, sich bewusst zu sein, potenzielle Probleme.

InformationsquelleAutor Matt Altepeter | 2012-10-11

Schreibe einen Kommentar