- Variable estática
-
En informática una variable estática es una variable cuyo valor no varía durante la vida del proceso en ejecución. Normalmente una variable estática tiene un ámbito más amplio que otras variables. Los valores de variables estáticas se pueden establecer una vez (durante el tiempo de ejecución) o se pueden cambiar en múltiples ocasiones durante la ejecución del programa. La terminología "variable estática" se basa en C y C++, pero también se usa en muchos lenguajes de programación derivados. En lenguajes de diferente origen el mismo concepto puede denominarse "variable global".
Contenido
Constantes
Los programas informáticos pueden almacenar constantes en variables constant o en variables static, dependiendo de las posibilidades del lenguaje de programación. Por ejemplo, un programa que usa una aproximación de pi es más fácil de escribir, leer y mantener con una variable llamada "PI" en lugar de múltiples ocurrencias de "3.14159".
Ámbito
En el lenguaje de programación C se usa static con variables globales y funciones para restringir su ámbito al archivo donde se definen. Con variables locales, static se usa para almacenar la variable en la memoria asignada de forma estática en lugar de la memoria asignada de forma automática. Siempre y cuando el lenguaje no fije la implementación del tipo de memoria a usar, la memoria asignada de forma estática se reserva normalmente en el segmento de datos del programa durante la compilación, mientras que la memoria asignada de forma automática es normalmente implementada como pila de llamadas transitorio.
Variables locales
La mayoría de los lenguajes de programación incluyen la posibilidad de usar subrutinas. Las variables de ámbito local en las subrutinas (variables locales) se crean y destruyen normalmente dentro de la propia subrutina (denominadas variable automática. Algunos lenguajes, sin embargo, (ej. lenguaje de programación C) permiten a las subrutinas retener el valor de las variables entre las llamadas a la función, de forma que la función puede preservar el valor de las variables si fuera necesario. Por ejemplo, una variable estática puede registrar el número de veces que una subrutina ha sido ejecutada. Para este propósito también es possible servirse de variables globales o de almacenamiento externo (ej. un archivo en un disco). Adicionalmente limita el ámbito del compilador de la variable en cuestión a esa function, incluso cuando el espacio asignado se encuentra en el área estática.
Clases
Lenguajes orientados a objetos usan clases y objetos. En este caso, una variable de clase es una variable que no está asociada con instancias de la clase. Sólo hay una única copia de la variable que se comparte entre los métodos de todas las instancias independientemente de su cantidad. En C++, las variables de clase se conocen como miembros de datos estáticos.
Ejemplo en C#
public class Request { private static int count; private string url; public Request() { //Create a new instance of Request //Count all requests Request.count++; } public string Url { get { return this.url; } set { this.url = value; } } public static int Count { get { //Do not use the this keyword here //as this refers to "THIS INSTANCE" return Request.count; } //Do not allow the developer to SET this value } }
Ejemplo en C++
class Request { private: static int count; string url; public: Request() { count++; } string getUrl() const { return url; } void setUrl(string value) { url = value; } static int getCount() { return count; } }; int Request::count = 0;
En este ejemplo, count se aplica a la clase mientra que url se aplica a cada instancia. Nótese que la variable count debe inicializarse al margen de la clase.
Referencias
- Este artículo fue creado a partir de la traducción del artículo static variable de la Wikipedia en inglés, concretamente de esta versión, bajo licencia Creative Commons Atribución Compartir Igual 3.0 y GFDL.
- 14.1.6 Static Variables from a computing science book at hawaii.edu
Véase también
Categoría:- Variables (programación)
Wikimedia foundation. 2010.