type qualifiers storage classes c
Importancia de los calificadores de tipo y las clases de almacenamiento en C ++.
En esto Serie de formación exclusiva en C ++ , ampliaremos más el tema de las variables y veremos los calificadores de tipo y las clases de almacenamiento en C ++ en este tutorial. Aunque este es un tema pequeño, es muy importante y significativo en lo que respecta a la programación C ++.
Los calificadores de tipo en C ++ no cambian el significado de las variables o entidades con las que se usan, sino que solo agregan información adicional a la entidad.
Lo que vas a aprender:
Calificadores de tipo en C ++
Los calificadores de tipo en C ++ agregan propiedades adicionales a la variable como una variable que es una constante o volátil.
Los calificadores de tipo expresan la forma en que se accede a una variable o dónde se almacena una variable en la memoria manteniendo el mismo significado o interpretación de la variable. En cierto modo, los calificadores de tipo añaden más refinamiento a las variables.
En C ++, el calificador de tipo se especifica justo antes del especificador de tipo (tipo de datos) de la variable.
Los calificadores de tipo en C ++ se clasifican como se muestra a continuación:
# 1) constante
El especificador de tipo 'const' sirve para definir los objetos de tipo const. Un objeto o variable constante no se puede modificar una vez declarado. Si se intenta modificar el objeto o la variable const, el compilador genera un error. Ya hemos visto sobre constantes / literal en nuestro tutorial anterior.
La definición de constantes que utilizan la palabra clave 'const' corresponde al calificador de tipo 'const'.
# 2) volátil
El calificador de tipo 'volátil' significa que el valor de la variable marcada como volátil puede cambiarse de otras formas que no están especificadas por el programa. Las variables que son volátiles cambian generalmente debido a algunos factores externos y no necesariamente debido al programa. En otras palabras, son de naturaleza volátil.
Por ejemplo, una variable que lee la temperatura en una palabra real puede volverse volátil ya que es posible que el programa no controle completamente la temperatura de lectura.
# 3) mutable
El calificador de tipo 'mutable' hace que los miembros o la variable sean modificables.
El calificador mutable generalmente se aplica a miembros de clase no estáticos de tipo no const y sin referencia. Según situaciones específicas, es posible que necesitemos que algunas variables permanezcan inmutables (no se pueden cambiar) y que algunas variables sean mutables. Este tipo de calificador es de mucha ayuda cuando queremos características mutables.
Clases de almacenamiento en C ++
Hasta ahora, hemos discutido todas las variables de C ++ en detalle. Hemos visto que las variables se declaran con sus respectivos tipos de datos y luego se utilizan en el programa. Para definir completamente una variable, también necesitamos clases de almacenamiento además de sus tipos de datos.
Aunque no hemos especificado ninguna clase de almacenamiento hasta ahora para las variables, había una clase de almacenamiento predeterminada 'auto' que se aplicó a todas las variables.
Entonces, ¿qué son las clases de almacenamiento?
Las clases de almacenamiento especifican cómo el compilador debe tratar la variable o función y cómo se asignará el almacenamiento a una variable. Define la visibilidad o el alcance y la vida útil de una variable. El tiempo de vida de la variable es cuánto tiempo va a permanecer activa.
La visibilidad o alcance de la variable es a qué funciones o módulos será accesible la variable. Estas clases de almacenamiento se especifican antes del tipo de datos de la variable.
En C ++, tenemos las siguientes clases de almacenamiento:
# 1) Clase de almacenamiento automático
Esta es la clase de almacenamiento predeterminada. La clase de almacenamiento “Auto” se aplica a las variables locales y el compilador la asigna automáticamente a las variables locales. Las variables locales precedidas por la palabra clave 'auto' permanecen activas en la función en la que se declaran y salen del alcance una vez que la función sale.
Si las variables que tienen la clase de almacenamiento 'auto' no se inicializan ni se les asigna ningún valor, entonces tienen valores indefinidos o basura.
Veamos un ejemplo de variables automáticas en un programa C ++.
|_+_|Producción:
Variable i = 0
Variable f = 0
Ahora podemos ver que I y f son las dos variables locales que hemos definido en la función principal con la clase de almacenamiento predeterminada 'auto'.
Como no les hemos asignado ningún valor, cuando imprimimos estas variables, vemos que ambas tienen valores = 0. Esto es totalmente dependiente del compilador en cuanto a qué valores asignar a la variable local automática si aún no tienen asignado ningún valor en el programa. .
NOTA: A partir de C ++ 11, la palabra clave auto se utiliza para inferencia de tipo . Esto significa que podemos usar un código como auto i = 10 y el tipo de datos de I se deducirá directamente del inicializador usado para i. Por lo tanto, si declaramos algo como 'auto float f;', entonces el compilador mostrará un error.
Por lo tanto, generalmente no usamos la declaración para la clase de almacenamiento automático, ya que se implica que el valor predeterminado siempre será la clase de almacenamiento automático.
# 2) Registrar clase de almacenamiento
Cuando tenemos un requisito de que una variable necesita un acceso más rápido, usamos la clase de almacenamiento de registro. Entonces, en lugar de almacenar las variables en la memoria de acceso aleatorio (RAM), estas variables se almacenan en el registro de la CPU y tienen un tamaño igual al de un registro.
Además, como estas variables no tienen una ubicación de memoria, no podemos usar el operador '&' con estas variables.
Tener una variable con la clase de almacenamiento de Registro no garantiza que la variable siempre se almacenará en el registro. En cambio, simplemente asume que la variable puede almacenarse en un registro y depende completamente del hardware y la implementación.
Las variables de registro tienen un alcance y una duración similares a las de las variables automáticas.
Por ejemplo,
|_+_|El código anterior con una variable de registro dará el mismo resultado que el que tiene una clase de almacenamiento automático.
Producción:
Variable i = 0
Variable f = 0
# 3) Clase de almacenamiento externo
La clase de almacenamiento externo es necesaria cuando las variables deben compartirse entre varios archivos. Las variables externas tienen alcance global y estas variables son visibles fuera del archivo en el que están declaradas.
Como las variables externas son las variables declaradas y definidas afuera en otro archivo, no se inicializan.
Las variables externas tienen un alcance global y la duración de las variables externas es tan larga como el programa en el que se declara terminado.
Las variables externas se pueden declarar de la siguiente manera:
|_+_|En el ejemplo anterior, tenemos dos declaraciones de variable con el mismo nombre, pero la primera es la variable externa definida en otro lugar. Esta variable extern será útil cuando incluyamos el archivo fuente en el que la variable extern temp está definida en nuestro programa.
# 4) Clase de almacenamiento estático
La clase de almacenamiento estático le dice al compilador que mantenga el valor de la variable durante la vida útil del programa. Las variables estáticas son similares a las variables locales, pero están precedidas por una palabra clave 'estática'.
A diferencia de las variables locales que salen del alcance después de que la función sale, las variables estáticas no salen del alcance cuando una función o un bloque sale y sus valores se conservan entre llamadas a funciones.
Las variables estáticas se inicializan y el almacenamiento se les asigna solo una vez en la vida útil de un programa. Las variables estáticas se inicializan a 0 si no están ya inicializadas durante la declaración.
Veamos el siguiente ejemplo para comprender mejor la clase de almacenamiento estático.
|_+_|Producción:
printvar llamada 1: variable estática var = 1
printvar llamada 2: variable estática var = 2
printvar llamada 3: variable estática var = 3
printvar llamada 4: variable estática var = 4
En el código anterior, tenemos una función 'printvar' en la que hemos declarado una variable estática var de tipo int. Luego incrementamos esta variable y la imprimimos. En la función principal, llamamos a la función printvar cuatro veces.
Ahora verifique la salida. La salida muestra que con cada llamada de función, la variable estática var se incrementa en 1 desde su valor anterior. Esta es la clase de almacenamiento estático que ayuda a la variable a mantener su valor entre llamadas a funciones. La variable estática no se reinicializa para cada llamada de función.
También deberíamos notar que en la función printvar, acabamos de declarar la variable estática y no la inicializamos. Es notable que cuando no inicializamos las variables estáticas se les asigna el valor inicial 0.
Nota: La clase de almacenamiento estático también se puede aplicar a variables globales. En este caso, la variable tendrá alcance global y almacenamiento adicional estático.
# 5) Clase de almacenamiento mutable
La clase de almacenamiento mutable se aplica solo a los objetos de clase. Al aplicar la clase de almacenamiento mutable, el miembro de un objeto puede anular la función del miembro 'const'. Esto significa que un miembro u objeto mutable puede ser modificado por una función miembro que es 'const'.
Aprenderemos más sobre las funciones y objetos const así como sobre los miembros mutables en nuestros tutoriales posteriores cuando aprendamos sobre programación orientada a objetos en C ++.
Conclusión
Se trata de especificadores de tipo y clases de almacenamiento en C ++. Esperamos haber podido aclarar todos los conceptos sobre las clases de almacenamiento y los especificadores de tipo a través de este tutorial.
activación de puertos vs reenvío de puertos para juegos
En nuestro próximo tutorial, aprenderemos más sobre los distintos operadores utilizados en C ++ junto con su uso.
=> Consulte la serie completa de capacitación en C ++ aquí
Lectura recomendada
- Variables en C ++
- Variables de Python
- Tutorial de interfaz Java y clase abstracta con ejemplos
- Conversiones de tipos en C ++
- Variables de VBScript: cómo declarar y usar variables - VBScript Dim
- Variables y funciones de JMeter
- Los 10 MEJORES proveedores de almacenamiento en la nube gratuitos (almacenamiento en línea 2021)
- Tipos de pruebas de migración: con escenarios de prueba para cada tipo