Область действия и область видимости переменных.

 

В языке C++ каждая функция это отдельный блок программы. Попасть в тело функции можно только с помощью вызова данной функции, то есть нельзя оператором безусловного перехода goto перейти в середину другой функции.

Как уже отмечалось выше, у каждой переменной должен быть оригинальный идентификатор, но в разных функциях ( блоках ) переменные могут иметь одинаковые идентификаторы .

Области действия переменных различаются на три основных типа переменных:

глобальные, локальные и формальные параметры.

Локальные переменные - это переменные объявленные внутри блока или внутри функции. В C++ возможно описание локальных переменных внутри любого блока программы. ( Блок - несколько операторов заключенных в фигурные скобки ) При этом переменная будет доступна только внутри того блока, внутри которого она описана. Локальная переменная существует только во время выполнения функции ( блока ), в которой она описана при выходе из функции ( блока ) эта переменная перестает существовать и ее значение теряется. Таким образом, нельзя ожидать, что данные содержащиеся в локальной переменной останутся неизменными при последующих вызовах функции. При описании локальной переменной ее начальное значение не определено, то есть она не будет равняться нулю!

main()

{

int first

...............

{

int second

 

}

Переменная second в этом месте не определена .

}

main()

{

int first;

...............

{

int first; // переменная отличная от first во внешнем блоке

...............

}

...............

}



Глобальные переменные - это переменные, объявленные вне какой-либо функции. В отличие от локальных переменных, глобальные переменные могут использоваться в любом месте программы, но перед их использованием они должны быть описаны .

Язык C++ гарантирует, что в отличие от локальных переменных при описании глобальных переменных без явного инициализатора значение будет равно нулю. Глобальная переменная существует в течении всего времени выполнения программы.

Область действия глобальной переменной - вся программа .

Использование глобальных переменных имеет свои недостатки :

 

1. они занимают память в течении всего времени работы программы

(локальные переменные освобождают память после завершения функции или блока, в которой они описаны )

2. использование глобальных переменных делает функции менее общими и затрудняет их использование в других программах.

 

Формальные параметры - это переменные объявленные при описании функции.

Формальные параметры могут использоваться в теле функции как локальные переменные, которыми они по сути дела и являются. Область действия формальных параметров - блок являющийся телом функции. Формальные параметры существуют только во время выполнения функции.

 

Пример:

 

#include<iostream.h>

int var1=12;// описана как глобальная переменная

main()

{

if(cout<<" внешний блок if() ")

{

int var1=34;

cout<<"во внешнем блоке var1="<<var1;//34

if(cout<<" внутренний блок if() ")

{

int var1=56;

cout<<" во внутреннем блоке var1="<<var1;//56

}

cout<<" во внешнем блоке var1="<<var1;//34

}

cout<<" в main() var1="<<var1;//12

}