Blog
Variables estáticas
- Publicado por: Rafael Fernandez
- Categoría: Nivel principiante C
En el lenguaje C; el término “static” es utilizado como una palabra clave a la hora de escribir tu código en C. Esta palabra puede utilizarse tanto como para manipular variables, como para también manipular funciones.
¿Qué es una variable estática?
Por defecto, las variables son locales para el ámbito en el que están definidas. En el lenguaje C, las variables pueden ser definidas o declaradas como estáticas para así aumentar el alcance de la misma, hasta que el mencionado alcance abarque la totalidad del archivo que las contiene. Como resultado, se puede acceder a estas variables desde cualquier lugar dentro del archivo que las contiene.
Consideremos la siguiente situación: queremos contar los corredores que participan en una carrera.
#include <stdio.h> int corredor() { int contador = 0; contador++; return contador; } int main() { printf("%d ", corredor()); printf("%d ", corredor()); return 0; }
Veremos que contador no se actualiza porque se elimina de la memoria tan pronto como se completa la función. Si static es utilizado, sin embargo:
#include <stdio.h> int corredor() { static int contador = 0; contador++; return contador; } int main() { printf("%d ", corredor()); printf("%d ", corredor()); return 0; }
¿Qué es una función estática?
Por defecto, las funciones son globales en C. Si declaramos una función como static, el alcance de esa función se reduce al archivo que la contiene.
La sintaxis se ve así:
static void fun(void) { printf("Yo soy una función estática"); }
¿Variable estática vs variable global?
Las variables estáticas tienen alcance sobre el archivo que las contiene, esto quiere decir que están restringidas a utilizarse únicamente en un archivo predeterminado. Sin embargo, se puede tener acceso a las variables globales fuera del archivo que las contiene originalmente.
Ejercicio
En este ejercicio, intenta encontrar la suma de algunos números usando la palabra clave static. No pases ninguna variable que represente el total acumulado a la función sum()
#include <stdio.h> int sum (int num) { /** * encontrar suma a n números */ } int main() { printf("%d ",sum(55)); printf("%d ",sum(45)); printf("%d ",sum(50)); return 0; }
Respuesta al ejercicio propuesto:
#include <stdio.h> int suma (int numa) { static int total = 0; total += numa; return total; } int main() { printf("%d ",suma(55)); printf("%d ",suma(45)); printf("%d ",suma(50)); return 0; }
Salida por consola:
55 100 150
- afrontar con éxito niveles superiores
- entender código C
[…] ➡Variables estáticas (AprenderC curso principiante) […]