Programación estática en C

Static C Programming



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

{tipo de datos} {nombre de variable} estático







Variables locales estáticas

Cuando una variable en una función es estática, la variable conserva su valor entre las llamadas a la función.



//Example1.c

#incluir

En tdivertido1()
{

En tcontar=0;
contar++;
regresocontar;
}

En tfun2()
{
estático En tcontar=0;
contar++;
regresocontar;
}

En tprincipal()
{
printf ('fun1 1st call devuelve:% d orte',divertido1());
printf ('fun1 2nd call devuelve:% d orte orte',divertido1());

printf ('fun2 1st call devuelve:% d orte',fun2());
printf ('fun2 2nd call devuelve:% d orte',fun2());

regreso 0;
}


En el ejemplo 1.c, tenemos dos funciones: fun1 () y fun2 () . En fun1 () , declaramos una variable (recuento) y la inicializamos a 0. Luego, incrementamos la variable de recuento y devolvemos el valor resultante. Utilizando principal() , llamamos fun1 () dos veces, y cada vez, se devuelve un valor de 1 porque la variable de recuento se borra cuando la llamada a fun1 () esta completado. En fun2 () declaramos la variable de recuento como una variable estática. Por tanto, se conserva su valor. Utilizando 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 forma que otras variables globales, pero no se puede acceder a ella desde otro programa en C.





Funciones estáticas

En C, las funciones son globales por defecto. Sin embargo, si declaramos una función estática, entonces la función es local y no se puede acceder a ella desde otro programa en C.

Inicialización de variables estáticas

Si una variable estática no se inicializa explícitamente, se inicializa como 0.



//Example2.c

#incluir

En tprincipal()
{
estático En tI;

printf ('Valor de i:% d orte',I);

regreso 0;
}


En Example2.c, declaramos una variable estática i que no está inicializada. Sin embargo, debido a que la variable es estática, se inicializa automáticamente a 0.

Es importante notar que una variable estática debe ser inicializada por un literal constante; no podemos usar el valor de retorno de una función para inicializar una variable estática.

//Example3.c

#incluir

En tdivertido1()
{
regreso 5;
}

En tprincipal()
{
estático En tI=divertido1();
printf ('Valor de i:% d orte',I);
regreso 0;
}


En Example3.c, intentamos inicializar una variable estática usando 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 una variable estática no se inicializa, tomará un valor predeterminado de 0.

No se puede acceder a una variable estática global ni a una función estática desde un programa que no sea aquel en el que se definió.