static tipo de datos nombre variable
Variables locales estáticas
Cuando una variable en una función es estática, la variable conserva su valor entre las llamadas de función.
//Ejemplo 1.C
En el ejemplo 1.C, tenemos dos funciones: Fun1 () y Fun2 (). En Fun1 (), Declaramos una variable (recuento) y la inicializamos a 0. Luego, aumentamos la variable de conteo y devuelve el valor resultante. Usando principal(), llamamos Fun1 () Dos veces, y cada vez, se devuelve un valor de 1 porque la variable de conteo se borra cuando la llamada a Fun1 () esta completado. En Fun2 () Declaramos la variable de recuento como una variable estática. Por lo tanto, su valor se conserva. Usando principal(), llamamos Fun2 () dos veces: la primera vez, se devuelve un valor de 1, y la segunda vez, se devuelve un valor de 2.
Variables globales estáticas
Una variable global estática se comporta de la misma manera que otras variables globales, pero no se puede acceder desde otro programa C.
Funciones estáticas
En C, las funciones son globales de forma predeterminada. Sin embargo, si declaramos una función estática, la función es local y no se puede acceder desde otro programa C.
Inicialización de variables estáticas
Si una variable estática no se inicializa explícitamente, entonces se inicializa como 0.
// Ejemplo2.C
En el ejemplo2.c, declaramos una variable estática I que no se inicializa. Sin embargo, debido a que la variable es estática, se inicializa automáticamente a 0.
Es importante tener en cuenta que una variable estática debe inicializarse mediante un literal constante; No podemos usar el valor de retorno de una función para inicializar una variable estática.
// Ejemplo3.C
En el ejemplo3.c, intentamos inicializar una variable estática utilizando el valor de retorno de Fun1 (). Sin embargo, como puede ver, se devuelve un error cuando se compila el código.
Resumen
La vida útil de una variable estática y la vida útil del programa son iguales.
Si no se inicializa una variable estática, entonces tomará un valor predeterminado de 0.
Ni se puede acceder a una variable estática global ni una función estática desde un programa que no sea el que se definió.