|
|
||
6. Определение глобальных переменных |
||
Обычно глобальные переменные объявляют в верхней части кода, ниже директив #include, но выше любого другого кода. Например: |
||
#include <iostream>
// Переменные, определенные вне блока, являются глобальными переменными
int g_x; // глобальная переменная g_x
const int g_y(3); // константная глобальная переменная g_y
void doSomething()
{
// Глобальные переменные можно использовать в любом месте программы
g_x = 4;
std::cout << g_y << "\n";
}
int main()
{
doSomething();
// Глобальные переменные можно использовать в любом месте программы
g_x = 7;
std::cout << g_y << "\n";
return 0;
} |
||
Подобно тому, как переменные во внутреннем блоке скрывают переменные с теми же именами во внешнем блоке, локальные переменные скрывают глобальные переменные с одинаковыми именами внутри блока, в котором они определены. Однако с помощью оператора разрешения области видимости (::), компилятору можно сообщить, какую версию переменной вы хотите использовать: глобальную или локальную. Например: #include <iostream>
int value(4); // глобальная переменная
int main()
{
int value = 8; // эта переменная (локальная) скрывает значение глобальной переменной
value++; // увеличивается локальная переменная value (не глобальная)
::value--; // уменьшается глобальная переменная value (не локальная)
std::cout << "Global value: " << ::value << "\n";
std::cout << "Local value: " << value << "\n";
return 0;
} // локальная переменная уничтожается
Результат выполнения программы: Global value: 3 Local value: 9 Использовать одинаковые имена для локальных и глобальных переменных — это прямой путь к проблемам и ошибкам, поэтому подобное делать не рекомендуется. Многие разработчики добавляют к глобальным переменным префикс g_ («g» от англ. «global»). Таким образом, можно убить сразу двух зайцев: определить глобальные переменные и избежать конфликтов имен с локальными переменными.
|
||
6 |