Szukaj…
Prosty zakres bloku
Zakres zmiennej w bloku { ... }
rozpoczyna się po deklaracji i kończy na końcu bloku. Jeśli jest zagnieżdżony blok, blok wewnętrzny może ukryć zakres zmiennej zadeklarowanej w bloku zewnętrznym.
{
int x = 100;
// ^
// Scope of `x` begins here
//
} // <- Scope of `x` ends here
Jeśli zagnieżdżony blok zaczyna się w bloku zewnętrznym, nowa zadeklarowana zmienna o tej samej nazwie, co wcześniej w klasie zewnętrznej, ukrywa pierwszą.
{
int x = 100;
{
int x = 200;
std::cout << x; // <- Output is 200
}
std::cout << x; // <- Output is 100
}
Zmienne globalne
Aby zadeklarować pojedyncze wystąpienie zmiennej, która jest dostępna w różnych plikach źródłowych, można ustawić ją w zakresie globalnym za pomocą słowa kluczowego extern
. To słowo kluczowe mówi kompilatorowi, że gdzieś w kodzie jest definicja tej zmiennej, więc można jej używać wszędzie, a wszystkie zapisywanie / odczytywanie odbywa się w jednym miejscu pamięci.
// 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;
}
Wynik:
The radius is: 123
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow