C - Reglas de alcance
Un alcance en cualquier programación es una región del programa donde una variable definida puede tener su existencia y más allá de esa variable no se puede acceder. Hay tres lugares donde las variables se pueden declarar en el lenguaje de programación C −
-
Dentro de una función o un bloque que se llama local variables.
-
Fuera de todas las funciones que se llama global variables.
-
En la definición de parámetros de función que se denominan formales parámetros.
Entendamos qué son locales y globales variables y formales parámetros.
Variables locales
Las variables que se declaran dentro de una función o bloque se denominan variables locales. Solo pueden ser utilizados por declaraciones que están dentro de esa función o bloque de código. Las variables locales no son conocidas por funciones ajenas a las suyas. El siguiente ejemplo muestra cómo se utilizan las variables locales. Aquí todas las variables a, b y c son locales para la función main().
Demostración en vivo#include <stdio.h> int main () { /* local variable declaration */ int a, b; int c; /* actual initialization */ a = 10; b = 20; c = a + b; printf ("value of a = %d, b = %d and c = %d\n", a, b, c); return 0; }
Variables globales
Las variables globales se definen fuera de una función, generalmente en la parte superior del programa. Las variables globales mantienen sus valores durante la vida útil de su programa y se puede acceder a ellas dentro de cualquiera de las funciones definidas para el programa.
Cualquier función puede acceder a una variable global. Es decir, una variable global está disponible para su uso en todo el programa después de su declaración. El siguiente programa muestra cómo se usan las variables globales en un programa.
Demostración en vivo#include <stdio.h> /* global variable declaration */ int g; int main () { /* local variable declaration */ int a, b; /* actual initialization */ a = 10; b = 20; g = a + b; printf ("value of a = %d, b = %d and g = %d\n", a, b, g); return 0; }
Un programa puede tener el mismo nombre para las variables locales y globales, pero tendrá preferencia el valor de la variable local dentro de una función. Aquí hay un ejemplo −
Demostración en vivo#include <stdio.h> /* global variable declaration */ int g = 20; int main () { /* local variable declaration */ int g = 10; printf ("value of g = %d\n", g); return 0; }
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −
value of g = 10
Parámetros formales
Los parámetros formales se tratan como variables locales dentro de una función y tienen prioridad sobre las variables globales. El siguiente es un ejemplo −
Demostración en vivo#include <stdio.h> /* global variable declaration */ int a = 20; int main () { /* local variable declaration in main function */ int a = 10; int b = 20; int c = 0; printf ("value of a in main() = %d\n", a); c = sum( a, b); printf ("value of c in main() = %d\n", c); return 0; } /* function to add two integers */ int sum(int a, int b) { printf ("value of a in sum() = %d\n", a); printf ("value of b in sum() = %d\n", b); return a + b; }
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −
value of a in main() = 10 value of a in sum() = 10 value of b in sum() = 20 value of c in main() = 30
Inicializar variables locales y globales
Cuando se define una variable local, el sistema no la inicializa, debe inicializarla usted mismo. El sistema inicializa automáticamente las variables globales cuando las define de la siguiente manera −
Tipo de datos | Valor predeterminado inicial |
---|---|
int | 0 |
caracter | '\0' |
flotar | 0 |
doble | 0 |
puntero | NULO |
Es una buena práctica de programación inicializar las variables correctamente, de lo contrario, su programa puede producir resultados inesperados, porque las variables no inicializadas tomarán algún valor basura ya disponible en su ubicación de memoria.
Lenguaje C
- Reglas de circuito en serie
- Reglas de circuito paralelo
- Reglas para derivados
- Reglas para antiderivadas
- Variables de C# y tipos de datos (primitivos)
- Ámbito variable de C#
- Variables, literales y constantes de C++
- C Variables, constantes y literales
- Clase de almacenamiento C
- Variables y literales de Java
- Alcance de la escala de tiempo de Verilog