Урок 12. Области видимости

Область видимости переменной — это такое место в коде, в котором данная переменная может быть использована. Например, мы объявим переменную внутри некоторой функции, очевидно, что мы не сможем обращаться к ней вне функции, потому что там про нее ничего не знают:

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(> 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(> 3)
    {
        cout<<a;//2
        int a = 3;
        cout<<a;//3
    }
    cout<<a;//2;
}
int main()
{
    cout<<a;//1 
    return 0;
}

Надеюсь, я достаточно осветил тему областей видимости и вы можете смело переходить к следующему уроку.

Категория: C++ | Добавил: ghost_mod (29.09.2016)
Просмотров: 432 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: