В языке 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
}