Warum Adressnull für Nullzeiger verwenden?
In C und C wird empfohlen, Zeiger nach dem Freigeben von Speicher auf Null zu setzen, um potenzielle Gefahren zu vermeiden from gibt sie wieder frei, malloc gibt einen Zeiger mit dem Wert Null zurück, wenn es keinen Speicher abrufen kann, während if (p != 0) Wird normalerweise verwendet, um die Gültigkeit eines eingehenden Zeigers zu überprüfen. Obwohl die Speicheradressierung bei 0 beginnt, ist 0 genauso gültig wie andere Adressen. Warum wird sie nicht verwendet, um Nullzeiger darzustellen? null?
Konzeptionelle AbstraktionDer Nullzeiger ist nur ein abstraktes Konzept, eine Konstante und die Adresse ist 0 Keine wirkliche Relevanz. C++0x hat das Schlüsselwort nullptr hinzugefügt, um dies hervorzuheben. Der Compiler kann die Konstante 0 je nach Plattform in eine andere Zahl übersetzen. Stellen Sie jedoch sicher, dass sie nicht mit der „echten“ Adresse übereinstimmt, sondern mit einer anderen Nullzeiger.
PlattformbeschränkungenHistorisch gesehen war 0 laut C. die von frühen Systemen verwendete Adresse Der Standard spezifiziert Nullzeigerkonstanten. Auf einigen Plattformen ist 0 möglicherweise nicht der beste Wert, daher ist der Compiler für die Konvertierung in eine andere Zahl verantwortlich.
Grund für die Wahl von 0Negative Zahlen haben im Kontext von Adressen keine wirkliche Bedeutung und die positiven und negativen Leerzeichen werden zwischen gültigen Adressen und verschwendeten Zahlen aufgeteilt. Darüber hinaus kann 0 in jedem Datentyp dargestellt werden. Die einzigen Anforderungen, die ein Nullzeiger erfüllen muss, sind, dass er nicht einem Zeiger auf ein tatsächliches Objekt entspricht und dass alle Nullzeiger untereinander gleich sind
Letztendlich ist die Wahl von 0 ein Design Entscheidung, um sicherzustellen, dass ein Nullzeiger die erforderlichen Bedingungen erfüllt, während er als eindeutige Kennung für eine bestimmte Adresse reserviert ist.
Das obige ist der detaillierte Inhalt vonWarum wird Adresse Null verwendet, um Nullzeiger in C und C darzustellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!