Una variable global en programación es una variable cuyo alcance es el programa completo, a menos que sea anulada . Los mecanismos de interacción con variables globales se denominan mecanismos de acceso al entorno o estado global ( global environment , global state ) . Las variables globales se pueden usar para la interacción entre procedimientos y funciones como una alternativa para pasar argumentos y devolver valores [1] .
El uso de variables globales tiene desventajas: una variable global se puede cambiar en cualquier punto del programa (si no está en la memoria protegida o declarada como una variable de solo lectura ), lo que puede afectar el funcionamiento de otras partes del programa. el programa [2] . Por esta razón, las variables globales tienen un potencial ilimitado para crear dependencias mutuas, lo que conduce a la complejidad del programa. Sin embargo, en algunos casos es útil utilizar variables globales. Por ejemplo, se pueden usar para evitar tener que pasar variables de uso frecuente a través de múltiples funciones. Las variables globales también dificultan la integración de módulos porque el código escrito anteriormente puede contener variables globales con los mismos nombres que en el módulo integrable.
Las variables globales se usan ampliamente para pasar datos entre secciones de código que no participan en las relaciones de llamadas, como hilos paralelos de ejecución o controladores de señales . Sin un bloqueo adecuado (por ejemplo, con un mutex ), el código que usa variables globales no será seguro para subprocesos , excepto las variables de solo lectura en un área protegida de la memoria . Con un aumento en el número de variables y, en consecuencia, bloqueos , aumenta la probabilidad de bloqueos mutuos .
Ejemplo en C :
en un ; /* Declarar una variable entera global "a" */ flotante b = 6 ; /* Declarar una variable global de punto flotante "b" y asignarle el valor "6" */ int principal ( vacío ) { a = 12 _ /* Asignando a la variable "a" el valor "12" */ devuelve a + b ; }