Ricerca…
Semplice ambito di blocco
L'ambito di una variabile in un blocco { ... }
, inizia dopo la dichiarazione e termina alla fine del blocco. Se esiste un blocco nidificato, il blocco interno può nascondere l'ambito di una variabile dichiarata nel blocco esterno.
{
int x = 100;
// ^
// Scope of `x` begins here
//
} // <- Scope of `x` ends here
Se un blocco nidificato inizia all'interno di un blocco esterno, una nuova variabile dichiarata con lo stesso nome che è prima nella classe esterna, nasconde la prima.
{
int x = 100;
{
int x = 200;
std::cout << x; // <- Output is 200
}
std::cout << x; // <- Output is 100
}
Variabili globali
Per dichiarare una singola istanza di una variabile accessibile in diversi file sorgente, è possibile renderla nell'ambito globale con la parola chiave extern
. Questa parola chiave dice al compilatore che da qualche parte nel codice esiste una definizione per questa variabile, quindi può essere utilizzata ovunque e tutte le operazioni di scrittura / lettura verranno eseguite in un unico luogo di 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;
}
Produzione:
The radius is: 123