Jörg X. wrote:
>>> (uint8_t*)0
> zeigt auf das Byte an Adresse 0, das ist noch kein NULL-Pointer
doch das ist er.
Für 0 gibt es eine Ausnahme.
>
1 | > uint8_t *ptr =NULL;
|
2 | >
|
NULL ist auch nichts anderes. Nur durch das Makro verborgen.
> welchen konkreten Wert ein NULL-pointer hat ist doch höchstens von
> "akademischem" Interesse,
Im Prinzip ja.
> da man den ja garNICHT DEreferenzieren DARF.
das macht nichts. Er existiert. Und auch ein Nullpointer muss
ja einen Wert haben. Der muss nicht notwendigerweise 0 sein,
es könnte auch jeder andere Zahlenwert hergenommen werden.
Nur muss der Compiler sicherstellen, dass bei einer Zuweisung
pPtr = 0;
genau dieser eine Wert für den Nullpointer benutzt wird. Das
gilt auch für Fälle wie
pPtr = 1 - 1;
oder sontige Ausdrücke, die als Ergebnis 0 haben.
Allerdings: Ich kenne keine Plattform, auf der der Nullpointer-Wert
nicht 0 wäre.
> Wenn_ NULL ein konkreter Wert _wäre, könnte man ja grundsätzlich in C
> (mindestens) eine Adresse nicht nutzen
Genauso ist es.