La variable estática puede ser interna o externa según el lugar de declaración. Las variables estáticas se almacenan en segmentos de datos inicializados.
Variables estáticas internas: Las variables estáticas internas se definen como aquellas que tienen variables estáticas que se declaran dentro de una función y se extienden hasta el final de la función en particular.
Sintaxis:
main( ) { static datatype variable; // other statements }
Ejemplo:
// C program to demonstrate // Internal Static Variables #include <stdio.h> int value(); int main() { printf("%d", value()); return 0; } int value() { static int a = 5; return a; }
Producción:
5
Variables estáticas externas: Las variables estáticas externas son aquellas que se declaran fuera de una función y se configuran globalmente para todo el archivo/programa.
Sintaxis:
static datatype variable; main() { statements } function1() { statements }
Ejemplo:
// C program to demonstrate // External Static Variables #include <stdio.h> int add(int, int); static int a = 5; int main() { int c; printf("%d", add(a, c)); } int add(int c, int b) { b = 5; c = a + b; return c; }
Producción:
10
Diferencia entre variables estáticas internas y variables estáticas externas:
Parámetro | Variables estáticas internas | Variables estáticas externas |
---|---|---|
Palabra clave | «estático» | «estático» |
Enlace | La variable estática interna no tiene vinculación. | Las variables estáticas externas tienen vinculación interna. |
Declaración | Las variables estáticas internas se declaran dentro de la función principal. | Las variables estáticas externas se declaran encima de la función principal. |
Comparación | Las variables estáticas internas son similares a las variables automáticas (locales). | Las variables estáticas externas son similares a las variables globales (externas). |
Visibilidad | Las variables estáticas internas están activas (visibilidad) en la función particular. | Las variables estáticas externas están activas (visibilidad) en todo el programa. |
Toda la vida | Las variables estáticas internas están vivas (vida útil) hasta el final de la función. | Las variables estáticas externas están vivas (de por vida) en todo el programa. |
Alcance | Las variables estáticas internas tienen almacenamiento persistente con alcance de bloque (funciona solo dentro de un bloque o función en particular). | Las variables estáticas externas tienen almacenamiento permanente con alcance de archivo (funciona en todo el programa). |