Estática en la programación C

Estática en la programación C
En este tutorial, explicaremos la palabra clave estática aplicándola en variables y funciones. Static es una palabra clave utilizada en la programación C, y se puede aplicar utilizando la siguiente sintaxis:

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
#incluir
int Fun1 ()

int count = 0;
contar ++;
recuento de retorno;

int Fun2 ()

static int count = 0;
contar ++;
recuento de retorno;

int main ()

printf ("FUN1 1er llamado devoluciones: %d \ n", fun1 ());
printf ("FUN1 2nd Call Devoluciones: %d \ n \ n", fun1 ());
printf ("FUN2 1er llamado devoluciones: %d \ n", fun2 ());
printf ("FUN2 2nd llamadas devoluciones: %d \ n", fun2 ());
regresar 0;


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
#incluir
int main ()

static int i;
printf ("Valor de i: %d \ n", i);
regresar 0;


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
#incluir
int Fun1 ()

regresar 5;

int main ()

static int i = fun1 ();
printf ("Valor de i: %d \ n", i);
regresar 0;


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ó.