2014-11-16 11 views
6

Für zwei Zeiger a und b, die beide auf dasselbe Objekt oder dieselbe Funktion zeigen, unter welchen Umständen garantieren die C-Standards, dass a == b? Gibt es Plattformen, auf denen a != b halten könnte, wenn a und b auf dasselbe Objekt zeigen?Wann sind Zeiger auf dasselbe Objekt gleich?

Antwort

12

Nach der C Standard (6.5.9 Gleichstellung Betreiber von N1548 Committee Draft - 2. Dezember 2010 ISO/IEC 9899: 201x)

6 Zwei Zeiger vergleichen gleich, wenn und nur wenn beide Null-Zeiger , beide sind Zeiger auf dasselbe Objekt (einschließlich einem Zeiger auf ein Objekt und ein Subobjekt an seinem Anfang) oder Funktion, beide sind Zeiger auf einer hinter dem letzten Element des gleichen Array-Objekt oder eine ist ein Zeiger auf eins nach dem Ende eines Array-Objekts und das andere ist ein Zeiger auf den Anfang eines anderen Array-Objekt, das unmittelbar folgen das erste Array-Objekt in der Adresse space.109)

+0

Vielen Dank für Ihre Antwort auf passiert. Jemand hat mir gesagt, dass Intel Sprache zu C hinzugefügt hat, so dass 'a! = B 'auch dann gelten kann, wenn' a' und 'b' auf verschiedene Objekte zeigen. Welchen C-Standard zitieren Sie? – fuz

+0

@ FUZxxl- 'a! = B 'wird nur gehalten, wenn an und b auf verschiedene Objekte zeigen. Ich glaube du hast falsch getippt! –

+0

@FUZxxl Ich zitierte das folgende Dokument N1548 Komitee Draft - 2. Dezember 2010 ISO/IEC 9899: 201x –

Verwandte Themen