Область дії змінної залежить від того, в якому місці програми вона оголошена. Оголошення змінних можна записати:
1) поза межами всіх функцій – це глобальна змінна, яку можна використовувати у будь якому місці програми, починаючи від точки її оголошення, глобальні змінні автоматично ініціалізуються нульовими значеннями;
2) всередині функцій або програмних блоків – такі змінні називають локальними, область дії локальної змінної обмежена функцією чи програмним блоком, в якому оголошено дану змінну;
3) в списку формальних параметрів функцій – локальні змінні, діють в межах функції.
Наприклад, виконуємо програму:
#include <iostream>
using namespace std;
int a; // Глобальна змінні
int main(){
int b; // Локальна змінна
cout << "a=" << a << endl; // Виводить 0
cout << "b=" << b << endl; // Попередження, випадкове
// число
}
Змінна а глобальна, їй автоматично буде присвоєне значення 0. При спробі вивести значення змінної b на екран компілятор видасть попередження – змінна не була ініціалізована. При ігноруванні цього попередження на екрані з’явиться випадкове число.
В наступному прикладі змінна оголошена всередині блоку операторів:
#include <iostream>
using namespace std;
int a;
int main(){ // Початок блоку операторів 1
int b = 123;
{ // Початок блоку операторів 2
int c = 456; // Змінна с створена
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
} // Кінець блоку операторів 2, змінна с знищена
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl; // Помилка, змінної с
// не існує
} // Кінець блоку операторів 1
В цьому прикладі а – глобальна змінна, b і c – локальні змінні. Змінна а доступна в будь якому місці програми, час її життя співпадає з часом виконання програми. Змінні, оголошені всередині блоку операторів, існують з моменту оголошення і до завершення виконання операторів цього блоку. Тобто, змінна доступна у блоці, в якому вона оголошена, і у всіх вкладених в цей блок блоках.
У програмі два блока операторів, блок 2 вкладений в блок 1. У блоці 2 доступні всі змінні програми. Після закінчення виконання цього блоку будуть знищені всі змінні, які в ньому оголошені. В нашому випадку це змінна с. Тому, коли ми будемо намагатися вивести на екран значення змінної с другий раз, виникне помилка – такої змінної на цей час існувати не буде.