martes 3 de marzo de 2009

CURSO FUNCIONES EN C. VARIABLES GLOBALES.

A diferencia de las variables locales cuyo ámbito estuvo confinado a la función donde estaban declaradas, el ámbito de las variables globales se extienden desde el punto en el que se definen hasta el final del programa. En otras palabras, si definimos una variable al principio del programa, cualquier función que forme parte de éste podrá utilizarla simplemente haciendo uso de su nombre.
La utilización de variables globales porporciona un mecanismo de intercambio de información entre funciones sin necesidad de utilizar argumentos. Por otra parte,las variables globales mantienen el valor que se les ha asignado dentro de su ámbito, incluso después de finalizar las funciones que modifican dicho valor. Debemos tener en cuenta que el uso de variables globales para el intercambio de informaciones entre funciones puede resultar útil en algunas situaciones ( como cuando se desea transferir más de un valor desde una función), pero su utilización podría llevarnos a programas de dificil interpretación y complejos de depurar.
Cuando trabajamos con variables globales debemos distinguir entre la definición de una variable global y su declaración. Cuando definamos una variable local, lo hacemos de la misma forma en que se declara una variable ordinaria. La definición de una variable global se realiza fuera de cualquier función. Además, las definiciones de variables globales suelen aparecer antes de cualquier función que desee utilizar dicha variable. La razón es que una variable global se identifica por la localización de su definición dentro del programa. Cuando se defina una variable global automáticamente, se reserva memoria para el almacenamiento de ésta.Además, podemos asignarle un valor inicial a la misma.
Si una función desea utilizar una variable global previamente definida, basta con utilizar su nombre sin realizar ningún tipo de declaración especial dentro de la función. Sin embargo, si la definición de la función aparece antes de la definición de la variable local, se requiere incluir una declaración de la variable global dentro de la función.
Para declarar una variable global se utiliza la palabra reservada extern. Al utilizar extern, le estamos diciendo al compilador que el espacio de memoria de esa variable está definido en otro lugar. Es más, en la declaración de una variable externa ( extern) no se puede incluir la asignación de un valor a dicha variable. Por otro lado, el nombre y el tipo de dato utilizados en la declaración de una variable global debe coincidir con el nombre y el tipo de dato de la variable global definida fuera de la función.
Debemos recordar que sólo se puede inicializar una variable global en su definición. El valor inicial que se le asigne a la variable global debe expresarse como una constante y no como una expresión. Es importante señalar que si no se asigna un valor inicial a la variable global, automaticamente se le asigna el valor 0 (0). De esta manera, las variables globales siempre cuentan con un valor inicial.
Cabe señalar que la declaración de una variable global puede hacer referencia a una variable que se encuentra definida en otro fichero. Por esta razón, podemos decir que el especificador de tipo extern hace referencia a una variable que ha sido definida en un lugar distinto al punto en el que se está declarando y donde se va a utilizar.
En aplicaciones grandes compuestas de varios ficheros, es común que las definiciones de las variables globales estén agrupadas y separadas del resto de ficheros fuente. Cuando se desea utilizar cualquiera de las variables globales en un fichero fuente, se debe incluir el fichero en el que están definidas las variables mediante la directiva de precompilación #include.