V
Original erstellt von <NULL>:
macht es eigentlich sinn NULL zu verwenden?
zeiger sind doch entweder gültig oder nicht gültig. auf was sie dann zeigen ist doch egal. wenn sie ungültig sind, ist es egal ob 0 oder NULL oder 123456 drin steht. man darf sie nicht benutzen, da sie keine gültigen werte haben. und wenn ein zeiger gültig ist, dann ist es doch ebenso egal ob da 0 oder 123456 drin steht.
an sich richtig.
aber man verwendet der wert 0 genau, um zu sagen, daß da KEIN objekt drinne ist.
völlig egal normalerweise. aber manchmal sinnvoll, z-B. hier:
Person* findByName(string name);
die funktion wird 0 zurückgeben, wenns in der tabelle keine person mit diesem namen gibt. hierzu isses einfach pracktisch, zu wissen, daß bei 0 kein objekt liegt. würde bei 0 eins liegen können, wüßt ich nicht sicher, ob da nun ne person mit diesem namen liegt oder ob es keine gab.
ebenso bei verketteten strukturen. zum beispiel kennzeichne ich bei ner verketteten liste das letzte element damit, daß sein nachfolger 0 ist. das macht sowas:
struct Node
{
T data;
Node* next;
};
und
for(Node* p=first;p!=0;p=p->next)
cout<<p->data;
wäre da nicht das tolle versprechen, daß bei 0 kein objekt liegt, müßte ich evtl teurer proggen.
gäbe es in der sprache kein 0, würd ich mir eins bauen.
int theNull;
void* NULL=(void*)(&theNull);
nur, weils so praktisch wäre, eine adresse zu kennen, wo kein objekt sein kann.
da das jeder machen würde, kanns die sprache auch gleich mitbringen. und 0 hat nen dicken vorteil! es ist schneller. der vergleich auf 0 ist auf allen prozessoren, die ich kenne, schneller als ein vergleich gegen ne andere konstante. wenn also 0 im zeigerkontext auch noch ne binare repräsentation als 0 hat, dann bringts netten speed, und den sogar umsonst.