Conosco il concetto di variabile di registro e sono casi d'uso, ma nella mia mente ci sono alcune domande basate su ciò che ho provato.
-
Non riesco ad accedere all'indirizzo di una variabile di registro in C anche se posso farlo in C ++! Perché? C'è qualche problema nell'accedere all'indirizzamento di una variabile di registro?
-
Supponiamo che dichiari una variabile stringa in C ++ come registro, quindi dove verrà memorizzata quella variabile? Qual è il punto nel dichiarare la classe di archiviazione di tipi di dati non numerici come "stringa" in C ++ per essere registrati ??
UPDATE: Ho pensato che il C ++ ci permettesse di recuperare l'indirizzo di una variabile di registro, poiché non ricevevo alcun errore nel mio programma che è il seguente:
#include<iostream>
#include<time.h>
using namespace std;
clock_t beg, en;
int main(){
int j, k=0;
beg=clock();
for(register int i=0;i<10000000;i++){
/*if(k==0){
cout<<&i<<endl; // if this code is uncommented, then C++ rejects the recommendation to make 'i' as register
k++;
}*/
}
en=clock();
cout<<en-beg<<endl;
cout<<&j<<endl<<&k;
return 0;
}
Quello che ho osservato è che se faccio la variabile 'i' come registro e non provo a stampare l'indirizzo usando '& i' allora C ++ accetta la raccomandazione e memorizza 'i' nel registro, questo può essere dedotto dal tempo di esecuzione del ciclo for che sarà sempre di circa 4-12 ms se 'i' è in registrazione. Ma se provo a stampare l'indirizzo della variabile "i", allora non ottengo alcun errore ma C ++ rifiuta la raccomandazione e questo può essere dedotto dal momento dell'esecuzione del ciclo che è sempre più di 25 se non sono registrato! !
Quindi, fondamentalmente non posso recuperare l'indirizzo di una variabile con la classe di archiviazione come registro !! PERCHE '?