Поскольку в данном случае переменная
Если имя переменной, объявленной во внутреннем блоке, совпадает с именем переменной, объявленной во внешнем блоке, то "внутренняя" переменная переопределяет "внешнюю" в пределах области видимости внутреннего блока. Рассмотрим пример.
#include
using namespace std;
int main()
{
int i, j;
i = 10;
j = 100;
if(j > 0) {
int i; // Эта переменная i отделена от внешней переменной i.
i = j /2;
cout << "Внутренняя переменная i: " << i << '\n';
}
cout << "Внешняя переменная i: " << i << '\n';
return 0;
}
Вот как выглядят результаты выполнения этой программы.
Внутренняя переменная i: 50
Внешняя переменная i: 10
Здесь переменная
Поскольку локальные переменные создаются с каждым входом и разрушаются с каждым выходом из программного блока, в котором они объявлены, они не хранят своих значений между активизациями блоков. Это особенно важно помнить в отношении функций. При вызове функции ее локальные переменные создаются, а при выходе из нее — разрушаются. Это означает, что локальные переменные не сохраняют своих значений между вызовами функций. (Существует один способ обойти это ограничение — он будет рассмотрен ниже в этой книге.)
Локальные переменные хранятся в стеке, если не задан иной способ хранения. Поскольку стек — это динамически изменяемая область памяти, локальные переменные не могут в общем случае сохранять свои значения между вызовами функций.
Как упоминалось выше, несмотря на то, что локальные переменные обычно объявляются в начале своего блока, это не является обязательным. Локальные переменные можно объявить в любом месте блока, главное, чтобы это было сделано до их использования. Например, следующая программа вполне допустима.
#include
using namespace std;
int main()
{
cout << "Введите число: ";
int a; // Объявляем одну переменную.
cin >> a;
cout << "Введите второе число: ";
int b; // Объявляем еще одну переменную.
cin >> b;
cout << "Произведение равно: " << а*Ь << '\n';
return 0;
}
В этом примере переменные
Переменную можно объявить в разделе инициализации цикла
#include
using namespace std;
int main()
{
// Переменная i локальная для цикла for.
for(int i=0; i<10; i++) {
cout << i << " ";
cout << "в квадрате равно " << i * i << "\n";
}
// i = 10; // *** Ошибка *** -- i здесь неизвестна!
return 0;
}
Здесь переменная
В общем случае, если управляющая переменная цикла