Repaso de C: reglas de alcance y variables estáticas

Reglas de alcance:

Las reglas de alcance son las reglas que determinan en qué parte de un programa en C se ve o se puede usar un nombre de variable o función. Recordemos que un programa puede constar de varios ficheros fuente, no sólo uno.

Como regla general, en C no se puede referenciar nada que no haya sido declarado antes. Esto es así porque el compilador de C sólo hace una pasada. Por tanto, cuando el compilador de C está a medias de procesar un fichero fuente, sólo conoce lo declarado desde el comienzo del fichero hasta ese punto.

Si se trata de un parámetro de entrada o de una variable local declarada al comienzo de una función, el alcance es la propia función. Si se trata de una variable local declarada a mitad de la función, el alcance es desde ahí hasta el final de la función.

Si se trata de una variable externa o una función, el alcance es desde el punto en que están declaradas hasta el final del fichero en que se encuentran.

Si se quiere usar una variable externa declarada en otro fichero, entonces hay que usar extern para indicar que se trata de una variable global, y por tanto accesible, pero declarada en otro sitio.

Variables y funciones estáticas:

Las reglas de alcance anteriores se pueden modificar con la palabra reservada static, que se puede aplicar a variables y a funciones.

Cuando una variable global / externa se declara como static, entonces esa variable sólo está disponible desde las funciones del archivo en que está declarada. Es una forma de limitar el alcance de las variables globales.

Igualmente, cuando una función se declara como static, ésta sólo se puede llamar desde el fichero en que está implementada. Nuevamente, es una forma de limitar el alcance de las funciones.

Por último, cuando la palabra reservada static se aplica a una variable local a una función, lo que ocurre es que esa variable mantiene su valor entre llamadas.


Código de ejemplo: alcance

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s