Sind Variablen in C ++ implizit Zeiger?

Oct 16 2020

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.

  1. Wo ist die Variable "a" gespeichert?
  2. 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

2 eerorika Oct 15 2020 at 23:47

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.

3 RSahu Oct 15 2020 at 23:43
  1. 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.