Глобальные переменные значат одно и то же во всей программе. А локальные переменные имеют смысл только в некоторой части программы.
Вообще, в C++ есть область видимости переменных. Область видимости - это часть программы, в которой имя переменной связано именно с этой переменной и продолжает возвращать её значение. При этом, за пределами данной области это же имя может быть связано с другой переменной и возвращать иное значение. Например
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream.h> // подключаем команды ввода/вывода //область видимости 1 int main() { int i = 100; //область видимости 2 for (int i = 1; i<2; i++) { cout << "(for) i = " << i << endl; } //конец области видимости 2 cout << "(main) i = " << i; cin.get();//ожидаем нажатия пользователем любой клавиши return 0; }//конец области видимости 1 |
Как видно из примера выше, имя переменной i связано с разными значениями внутри цикла for и вне его. Переменные, используемые в примере, являются локальными, поскольку их области видимости - цикл for и функция main. Если же область видимости переменной - вся программа, то такая переменная - глобальная. Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream.h> // подключаем функции ввода / вывода int glob_a = 1; // определяем глобальную переменную glob_a и присваиваем значение 1 void return_glob_a() // функция, которая выводит значение глобальной переменной glob_a на экран { cout << "glob_a = " << glob_a << endl; } int main() { return_glob_a(); // выведем значение глобальной переменной glob_a на экран, чтобы показать, что она определена не только в основной функции программы cout << "glob_a + 5 = " << glob_a + 5; // выполним действие с переменной, чтобы показать, что глобальная переменная glob_a определена и в основной функции программы cin.get(); // ожидаем нажатия любой клавиши пользователем return 0; } |
В примере выше glob_a - глобальная переменная, так как её область видимости - вся программа - не только основная функция main, но и пользовательская функция return_glob_a.