El scope es el alcance de una variable, define la región del programa donde puede ser usado. Comprender el ámbito de la variables evita cometer errores como la colisión de nombres o el uso indebido de memoria.
Existen cuatro tipos de ámbitos de variables.
Variables de ámbito global
Son aquellas variables que se declaran fuera de todas las funciones. Son accesibles desde cualquier parte del programa, después de haber sido declarada.
Input:

En este ejemplo la variable number
se declara fuera de cualquier función, por lo que tiene un ámbito global. Esto significa que puede ser utilizada tanto en la función varGlobal()
como en main()
.
Se debe tener mucho cuidado con las variables globales, porque son fáciles de modificar su valor.
Llamada 1 a la funcion varGlobal( ) | Valor: 30
El valor inicial de number en main( ) es: 30
Llamada 2 a la funcion varGlobal( ) | Valor: 30
El valor modificado de number en main( ) ahora es: 100
Llamada 3 a la funcion varGlobal( ) | Valor: 100
Proceso exitoso!
Variables de ámbito local
Son aquellas que se declaran dentro de un bloque de código, como en una función que está dentro de un par de llaves '{ }'. Son accesibles dentro de ese bloque específico, una vez sale del bloque dejan de existir y su memoria se libera.
Input:

Las variables name
y age
se encuentran definidas dentro del cuerpo de la función varLocal()
, por lo que solo es accesible para dicha función cuando es invocada.
Si queremos acceder desde la función principal de forma directa, el compilador encontrará un error de scope, puesto que las variables name
y age
no se encuentran dentro del ámbito de la función main()
. El único modo para que la función principal pueda acceder a las variables es llamando a la función varLocal()
.
Gabriel tiene 20 años
Proceso exitoso!
Variables de ámbito de bloque
Es una extensión de la variable de ámbito local, puede aplicarse de cualquier par de llaves '{ }', incluyendo bloques internos dentro de funciones.
Input:

La variable name
está ubicado en el ámbito de un estructura condiconal if
, esto quiere decir que su valor solo será visible dentro de la condicional mas no será accesible para la función principal.
Si se quiere acceder directamente del main()
, el compilador mostrará un error de scope.
Bienvenido Jamie
Proceso exitoso!
Variables de ámbito de función
Estas variables son declaradas dentro de una función y puede recibir parámetros. Dichas variables son locales a esa función y no son accesibles para otras funciones.
Input:

Tenemos la función add()
que recibe dos parámetros de tipo int
que son a
y b
, estos parámetros son variables que tienen un alcance solo a dicha función.
La función main()
invoca add()
pasándo los valores de 5 y 3 (estos valores son asignados para a y b respectivamente), una vez llamada a la función add()
esta se encarga de realizar una operación de suma y luego debe imprimir el resultado de la suma de los dos argumentos ingresados. Esto quiere decir que solo la función add()
se encarga de trabajar con las variables y a la vez de procesar el resultado, mientras que la función principal solo hace el llamado.
Si en la función main()
directamente intentamos sumar los valores de a
y b
, el compilador mostrará un mensaje de error de scope, debido a que a
y b
son variables que tienen un lazo directo solo con la función add()
.
La suma es: 8
Proceso exitoso!
El scope o alcance de las variables, es esencial para escribir programas correctos y eficientes en C++, permite gestionar la visibilidad y el tiempo de vida de nuestras variables, previniendo errores comunes y manteniendo una mejor organización en el código.