"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автора int x; // ошибка
} содержит ошибку, так как x определено дважды в одной и той же области видимости. 2.1.2 Объекты и Адреса (Lvalue) Можно назначать и использовать переменные, не имеющие имен, и можно осуществлять присваивание выражениям странного вида (например, *p[a+10]=7). Следовательно, есть потребность в имени "нечто в памяти". Вот соответствующая цитата из справочного руководства по C++:"Объект есть область памяти; lvalue есть выражение, ссылающееся на объект"(#с.5). Слово "lvalue" первоначально было придумано для значения "нечто, что может стоять в левой части присваивания". Однако не всякий адрес можно использовать в левой части присваивания; бывают адреса, ссылающиеся на константу (см. #2.4). 2.1.3 Время Жизни Если программист не указал иного, то объект создается, когда встречается его описание, и уничтожается, когда его имя выходит из области видимости, Объекты с глобальными именами создаются и инициализируются один раз (только) и "живут" до завершения static, ведут себя так же. Например*: ____________________ * Команда #include была выброшена из примеров в этой главе для экономии места. Она необходима в примерах, производящих ввывод, чтобы они были полными. (прим. автора) - стр 51 - int a = 1; void f() { int b = 1; // инициализируется при каждом вызове f() static int c = 1; // инициализируется только один раз cout << " a = " << a++ << " b = " << b++ << " c = " << c++ << "\n"; } main() { while (a < 4) f(); } |
|
|