type qualifiers storage classes c
Importància dels classificadors de tipus i de les classes d'emmagatzematge en C ++.
En aquest Sèrie d'entrenament C ++ exclusiva , ampliarem encara més el tema de les variables i veurem els qualificadors de tipus i les classes d'emmagatzematge en C ++ en aquest tutorial. Tot i que aquest és un tema petit, és molt important i significatiu pel que fa a la programació C ++.
Els qualificadors de tipus a C ++ no canvien el significat de les variables o entitats amb què s’utilitzen, sinó que només afegeixen informació addicional a l’entitat.
Què aprendreu:
Escriviu els qualificadors en C ++
Els qualificadors de tipus a C ++ afegeixen propietats addicionals a la variable com si una variable sigui una constant o una volàtil.
Els qualificadors de tipus expressen la forma en què s’accedeix a una variable o on s’emmagatzema una variable a la memòria mantenint el mateix significat o interpretació de la variable. En certa manera, els qualificadors de tipus afegeixen més refinament a les variables.
A C ++, el qualificador de tipus s’especifica just abans de l’especificador de tipus (tipus de dades) de la variable.
Els classificadors de tipus en C ++ es classifiquen com es mostra a continuació:
# 1) const
L'especificador de tipus 'const' és per definir els objectes del tipus const. Un objecte o variable const no es pot modificar un cop declarat. Si s’intenta modificar l’objecte o variable const, el compilador genera un error. Ja hem vist sobre constants / literals al nostre tutorial anterior.
La definició de constants que utilitza la paraula clau 'const' correspon al qualificador de tipus 'const'.
# 2) volàtil
El qualificador de tipus 'volàtil' significa que el valor de la variable marcada com a volàtil es pot canviar d'altres maneres que el programa no especifica. Les variables que són volàtils canvien generalment a causa d’alguns factors externs i no necessàriament a causa del programa. En altres paraules, són de naturalesa volàtil.
Per exemple, una variable que llegeix la temperatura en una paraula real es pot tornar volàtil ja que el programa no pot controlar completament la temperatura de lectura.
# 3) mutable
El qualificador de tipus 'mutable' fa que els membres o la variable siguin modificables.
El qualificatiu mutable sol aplicar-se a membres de classe no estàtics de tipus no const i tipus de referència. Segons situacions específiques, és possible que necessitem algunes variables per mantenir-se immutables (no es poden canviar) i algunes variables per ser mutables. Aquest tipus de qualificatius és de gran ajuda quan volem característiques mutables.
Classes d'emmagatzematge en C ++
Fins ara, hem analitzat totes les variables C ++ en detall. Hem vist que les variables es declaren amb els seus respectius tipus de dades i que després s’utilitzen al programa. Per definir completament una variable, també necessitem classes d'emmagatzematge a part dels seus tipus de dades.
Tot i que fins ara no hem especificat cap classe d'emmagatzematge per a variables, hi havia una classe d'emmagatzematge predeterminada 'auto' que s'aplicava a totes les variables.
Què són, doncs, les classes d'emmagatzematge?
Les classes d'emmagatzematge especifiquen com el compilador ha de tractar la variable o una funció i com s'ha d'assignar l'emmagatzematge a una variable. Defineix la visibilitat o l'abast i la vida útil d'una variable. La vida útil de la variable és el temps que la variable romandrà activa.
La visibilitat o l'abast de la variable és a quines funcions o mòduls serà accessible. Aquestes classes d'emmagatzematge s'especifiquen abans del tipus de dades de variable.
A C ++, tenim les següents classes d’emmagatzematge:
# 1) Classe d'emmagatzematge automàtic
Aquesta és la classe d'emmagatzematge predeterminada. La classe d'emmagatzematge 'Automàtic' s'aplica a les variables locals i el compilador l'assigna automàticament a les variables locals. Les variables locals precedides de la paraula clau 'automàtic' romanen actives a la funció en què es declaren i surten de l'abast un cop la funció surt.
Si les variables que tenen classe d'emmagatzematge 'automàtic' no s'inicialitzen ni se'ls assigna cap valor, tenen valors escombraries o indefinits.
Vegem un exemple de variables automàtiques en un programa C ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< Per tant, normalment no fem servir la declaració per a la classe d'emmagatzematge automàtic, ja que s'entén que el valor per defecte sempre serà la classe d'emmagatzematge automàtic.
# 2) Registra la classe d'emmagatzematge
Quan tenim el requisit que una variable necessiti un accés més ràpid, fem servir la classe d'emmagatzematge de registres. Per tant, en lloc d’emmagatzemar les variables a la memòria d’accés aleatori (RAM), aquestes variables s’emmagatzemen al registre de la CPU i tenen una mida igual a la d’un registre.
A més, com que aquestes variables no tenen una ubicació de memòria, no podem utilitzar l’operador ‘&’ amb aquestes variables.
Tenir una variable amb classe d’emmagatzematge de registre no garanteix que la variable sempre s’emmagatzemarà al registre. En lloc d'això, només assumeix que la variable es pot emmagatzemar en un registre i depèn completament del maquinari i la implementació.
Les variables de registre tenen un abast i una vida útil similars a les variables automàtiques.
Per exemple,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< Sortida:
Variable i = 0
Variable f = 0
# 3) Classe d'emmagatzematge extern
La classe d'emmagatzematge extern és necessària quan les variables s'han de compartir entre diversos fitxers. Les variables externes tenen un abast global i aquestes variables són visibles fora del fitxer en què es declaren.
Com que les variables externes són les variables declarades i definides fora d'un altre fitxer, no s'inicialitzen.
Les variables externes tenen un abast global i la vida útil de les variables externes és sempre que el programa en què es declari finalitzat.
Les variables externes es poden declarar de la següent manera:
extern int temp; int temp;
A l'exemple anterior, tenim dues declaracions de variables amb el mateix nom, però la primera és la variable externa definida en un altre lloc. Aquesta variable externa serà útil quan incloem el fitxer font en què es defineix la variable externa temp al nostre programa.
# 4) Classe d'emmagatzematge estàtic
La classe d’emmagatzematge estàtic indica al compilador que mantingui el valor de la variable durant tota la vida del programa. Les variables estàtiques són similars a les variables locals, però van precedides d’una paraula clau ‘estàtica’.
A diferència de les variables locals que surten de l'abast després de la sortida de la funció, les variables estàtiques no surten de l'abast quan surt una funció o un bloc i els seus valors es conserven entre les trucades de funció.
Les variables estàtiques s’inicialitzen i l’emmagatzematge se’ls assigna només una vegada durant la vida d’un programa. Les variables estàtiques s’inicialitzen a 0 si no s’inicialitzen durant la declaració.
Vegem l'exemple següent per entendre millor la classe d'emmagatzematge estàtic.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Sortida:
printvar call 1: variable estàtica var = 1
printvar call 2: variable estàtica var = 2
printvar call 3: variable estàtica var = 3
printvar call 4: variable estàtica var = 4
Al codi anterior, tenim una funció ‘printvar’ en què hem declarat una variable estàtica var de tipus int. A continuació, incrementem aquesta variable i la imprimim. A la funció principal, anomenem la funció printvar quatre vegades.
Ara comproveu la sortida. La sortida mostra que amb cada trucada de funció, la variable estàtica var s'incrementa en 1 respecte al seu valor anterior. Aquesta és la classe d’emmagatzematge estàtic que ajuda la variable a mantenir el seu valor entre les trucades de funció. La variable estàtica no es reinicialitza per a cada trucada de funció.
També hauríem de notar que a la funció printvar acabem de declarar la variable estàtica i no la vam inicialitzar. És notable que quan no inicialitzem les variables estàtiques s’assignen amb el valor inicial 0.
Nota: La classe d’emmagatzematge estàtic també es pot aplicar a variables globals. En aquest cas, la variable tindrà abast global i emmagatzematge estàtic addicional.
# 5) Classe d'emmagatzematge mutable
La classe d'emmagatzematge mutable només s'aplica als objectes de classe. En aplicar la classe d’emmagatzematge mutable, el membre d’un objecte pot anul·lar la funció membre ‘const’. Això significa que un membre o objecte mutable es pot modificar mitjançant una funció de membre que és 'const'.
Aprendrem més sobre les funcions i objectes const, així com els membres mutables en els nostres tutorials posteriors quan coneguem la programació orientada a objectes en C ++.
Conclusió
Es tracta d’especificadors de tipus i classes d’emmagatzematge a C ++. Esperem haver pogut deixar clars tots els conceptes sobre les classes d'emmagatzematge i els especificadors de tipus a través d'aquest tutorial.
com és una clau wep
Al nostre proper tutorial, aprendrem més sobre els diversos operadors utilitzats a C ++ juntament amb el seu ús.
=> Consulteu aquí la sèrie completa de formació C ++
Lectura recomanada
- Variables en C ++
- Variables de Python
- Interfície Java i tutoria de classes abstractes amb exemples
- Escriviu conversions en C ++
- VBScript Variables: Com declarar i utilitzar variables - VBScript Dim
- Variables i funcions de JMeter
- 10 MILLORS proveïdors gratuïts d'emmagatzematge en núvol (emmagatzematge en línia 2021)
- Tipus de proves de migració: amb escenaris de prova per a cada tipus