Область видимости переменной — это такое место в коде, в котором данная переменная может быть использована. Например, мы объявим переменную внутри некоторой функции, очевидно, что мы не сможем обращаться к ней вне функции, потому что там про нее ничего не знают:
1
2
3
4
5
6
7
8
9
10
|
void my_function()
{
int value = 3;
}
int main()
{
cout<<value;//ошибка
return 0;
}
|
С другой стороны мы с легкостью можем использовать переменную value внутри функции. В предыдущих уроках мы уже говорили, что области видимости переменных начинается с места ее объявления и кончается первой закрывающейся фигурной скобкой. Рассмотрим следующий пример:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
int a;
//начинается область видимости переменной а
void my_function(int b)
{//начинается область видимости переменной b
if(b > 3)
{
int c = 7;
//начинается область видимости переменной c
c++;
}//заканчивается область видимости переменной c
}//заканчивается область видимости переменной b
int main()
{
int d = 8;
//начинается область видимости переменной d
return 0;
}//заканчивается область видимости переменной d
//заканчивается область видимости переменной а
|
Как можно заметить из примера, переменная а доступна из всего кода, поэтому она называется глобальной переменной. Все остальные переменные видны только в каких — то своих областях, поэтому их называют локальными. Глобальные переменные объявляются вне функций, локальные соответственно в. Наверняка, все это вы уже поняли и без меня в предыдущих уроках, так о чем я веду речь? Есть такая хитрая возможность, что если в области видимости какой — то переменной, объявить другую переменную с тем же именем, то пока не закончится область видимости последней объявленной переменной вы будете работать с ней.
Пример на области видимости:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
int a = 1;
void my_function(int b)
{
cout<<a;//1
int a = 2;
if(b > 3)
{
cout<<a;//2
int a = 3;
cout<<a;//3
}
cout<<a;//2;
}
int main()
{
cout<<a;//1
return 0;
}
|
Надеюсь, я достаточно осветил тему областей видимости и вы можете смело переходить к следующему уроку.
|