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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow