Le variabili in C ++ sono implicitamente puntatori

Oct 16 2020

Sto attraversando un periodo difficile cercando di capirlo. Quando digitiamo in c ++

int a = 4;

È chiaro che il gestore della memoria alloca 4 byte per contenere il valore 4 e mantiene quel valore in un indirizzo specifico .. Dando il fatto che "una" variabile è solo un nome.

  1. Dove viene memorizzata la variabile "a"?
  2. Lo memorizza da qualche parte nella memoria e punta all'indirizzo di memoria di 4, poiché sappiamo che 4 è solo un oggetto temporaneo di per sé e "a" lega un riferimento o un puntatore ad esso

Risposte

2 eerorika Oct 15 2020 at 23:47

Le variabili in C ++ sono implicitamente puntatori

No. Le variabili non sono puntatori impliciti.

Dove viene memorizzata la variabile "a"?

Da qualche parte (o da nessuna parte ) nella memoria. L'allocazione della memoria per le variabili è responsabilità dell'implementazione del linguaggio.

Lo memorizza da qualche parte nella memoria

Sì (o da nessuna parte).

e punta all'indirizzo di memoria 4

No. Non esiste un indicatore del genere nella macchina astratta.

Allora come fa "a" a sapere dell'oggetto "4"

4 non è un oggetto. 4 è un valore letterale o un valore a seconda del contesto / prospettiva.

anon è qualcosa che sa niente. Il compilatore sa che l'oggetto denominato da aha il valore 4.

3 RSahu Oct 15 2020 at 23:43
  1. Dove viene memorizzata la variabile "a"?

Dalla mia esperienza, "a" non viene memorizzato in fase di esecuzione. Lo standard non richiede nemmeno che venga memorizzato. È un nome utilizzato per la compilazione, il collegamento e il debug. I dati necessari al compilatore, al linker e al debugger sono specifici della piattaforma. Lo standard non determina la natura di tali dati.

Detto questo, la tua seconda domanda può essere ignorata.