Buscar..
Alcance de bloque simple
El alcance de una variable en un bloque { ... }
, comienza después de la declaración y termina al final del bloque. Si hay un bloque anidado, el bloque interno puede ocultar el alcance de una variable que se declara en el bloque externo.
{
int x = 100;
// ^
// Scope of `x` begins here
//
} // <- Scope of `x` ends here
Si un bloque anidado comienza dentro de un bloque externo, una nueva variable declarada con el mismo nombre que está antes en la clase externa, oculta el primero.
{
int x = 100;
{
int x = 200;
std::cout << x; // <- Output is 200
}
std::cout << x; // <- Output is 100
}
Variables globales
Para declarar una instancia única de una variable a la que se puede acceder en diferentes archivos de origen, es posible hacerlo en el ámbito global con la palabra clave extern
. Esta palabra clave le dice al compilador que en alguna parte del código hay una definición para esta variable, por lo que puede usarse en todas partes y toda la escritura / lectura se realizará en un lugar de la memoria.
// File my_globals.h:
#ifndef __MY_GLOBALS_H__
#define __MY_GLOBALS_H__
extern int circle_radius; // Promise to the compiler that circle_radius
// will be defined somewhere
#endif
// File foo1.cpp:
#include "my_globals.h"
int circle_radius = 123; // Defining the extern variable
// File main.cpp:
#include "my_globals.h"
#include <iostream>
int main()
{
std::cout << "The radius is: " << circle_radius << "\n";'
return 0;
}
Salida:
The radius is: 123