Sind Variablen in C ++ implizit Zeiger?
Es fällt mir schwer, das herauszufinden. Wenn wir c ++ eingeben
int a = 4;
Es ist klar, dass der Speichermanager 4 Bytes zuweist, um den Wert 4 zu halten, und diesen Wert in einer bestimmten Adresse behält. Geben Sie an, dass "eine" Variable nur ein Name ist.
- Wo ist die Variable "a" gespeichert?
- Speichert es es irgendwo im Speicher und zeigt auf die Speicheradresse von 4, da wir wissen, dass 4 nur ein temporäres Objekt für sich ist und "a" entweder eine Referenz oder einen Zeiger darauf bindet
Antworten
Sind Variablen in C ++ implizit Zeiger?
Nein. Variablen sind keine impliziten Zeiger.
Wo ist die Variable "a" gespeichert?
Irgendwo (oder nirgendwo ) in Erinnerung. Die Zuweisung von Speicher für Variablen liegt in der Verantwortung der Sprachimplementierung.
Speichert es es irgendwo im Speicher
Ja (oder nirgendwo).
und zeigt auf die Speicheradresse von 4
Nein, es gibt keinen solchen Zeiger in der abstrakten Maschine.
Woher weiß "a" über das Objekt "4"?
4 ist kein Objekt. 4 ist ein Literal oder ein Wert, abhängig vom Kontext / der Perspektive.
aist nichts, was etwas weiß. Der Compiler weiß, dass das von benannte Objekt aden Wert 4 hat.
- Wo ist die Variable "a" gespeichert?
Nach meiner Erfahrung wird "a" zur Laufzeit nicht gespeichert. Der Standard verlangt auch nicht, dass es gespeichert wird. Dieser Name wird zum Kompilieren, Verknüpfen und Debuggen verwendet. Die vom Compiler, Linker und Debugger benötigten Daten sind plattformspezifisch. Der Standard schreibt die Art dieser Daten nicht vor.
Vor diesem Hintergrund kann Ihre zweite Frage ignoriert werden.