c++ - formatos - especificador de formato para double
¿Cuál es el especificador de vinculación y almacenamiento de una variable? (2)
Cuando alguien habla de un especificador de clase de almacenamiento de variables, ¿de qué están hablando?
También suelen hablar de vinculación variable en el mismo contexto, ¿qué es eso?
El especificador de clase de almacenamiento controla el almacenamiento y el enlace de sus variables. Estos son dos conceptos que son diferentes. C especifica los siguientes especificadores para las variables: auto, extern, register, static.
Almacenamiento
La duración de almacenamiento determina cuánto tiempo vivirá su variable en ram.
Hay tres tipos de duración de almacenamiento: estática, automática y dinámica.
estático
Si su variable se declara en el alcance del archivo, o con un especificador externo o estático, tendrá un almacenamiento estático. La variable existirá mientras el programa se esté ejecutando. No se emplea tiempo de ejecución para crear estas variables.
automático
Si la variable se declara en una función, pero sin el especificador externo o estático, tiene almacenamiento automático. La variable existirá solo mientras estás ejecutando la función. Una vez que regrese, la variable ya no existe. El almacenamiento automático normalmente se realiza en la pila. Es una operación muy rápida para crear estas variables (simplemente incremente el puntero de la pila por el tamaño).
dinámica
Si usa malloc (o nuevo en C ++) está usando almacenamiento dinámico. Este almacenamiento existirá hasta que llame gratis (o elimine). Esta es la forma más costosa de crear almacenamiento, ya que el sistema debe administrar la asignación y la desasignación de forma dinámica.
Enlace
La vinculación especifica quién puede ver y referenciar la variable. Hay tres tipos de enlaces: vinculación interna, vinculación externa y sin vinculación.
sin vinculación
Esta variable solo es visible donde fue declarada. Normalmente se aplica a las variables declaradas en una función.
enlace interno
Esta variable será visible para todas las funciones dentro del archivo (llamada unidad de traducción ), pero otros archivos no sabrán que existe.
enlace externo
La variable será visible para otras unidades de traducción. A menudo se los considera como "variables globales".
Aquí hay una tabla que describe las características de almacenamiento y vinculación basadas en los especificadores
Storage Class Function File Specifier Scope Scope ----------------------------------------------------- none automatic static no linkage external linkage extern static static external linkage external linkage static static static no linkage internal linkage auto automatic invalid no linkage register automatic invalid no linkage
Las clases de almacenamiento variable o los especificadores de tipo (como volátil, automático y estático) definen cómo / dónde se guardan las variables durante la ejecución del programa. Por ejemplo, las variables definidas en funciones generalmente se guardan en la pila, lo que significa que se perderán después de que la función regrese. Al usar la palabra clave "estática", puede forzar al compilador a poner la variable en el segmento de datos en la memoria, haciendo que el contenido de las variables sea persistente entre las llamadas a esa función. La palabra clave "registrar" hará que el compilador intente lo más posible para poner la variable en un registro de la CPU, útil para contadores en bucles, etc. Sin embargo, no está garantizado que en realidad esté en un registro después de todo.
Lea más acerca de los especificadores de tipo aquí .