"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автораДля типов, функций и костант "значение" неизменно; для неконстантных типов данных начальное значение может впоследствие изменяться: int count = 1; char* name = "Bjarne"; //... count = 2; name = "Marian"; Из всех определений только char ch; не задает значение. Всякое описание, задающее значение, является определением. 2.1.1 Область Видимости Описание вводит имя в области видимости; то есть, имя может использоваться только в определенной части программы. Для имени, описанного в функции (такое имя часто называют локальным), эта область видимости простирается от точки описания до конца блока, в котором появилось описание; для имени не в функции и не в классе (называемого часто глобальным именем) область видимости простирается от точки описания до конца файла, в котором появилось во внутреннем блоке или глобальное имя. Это значит, что можно - стр 49 - переопределять имя внутри блока для ссылки на другой объект. После выхода из блока имя вновь обретает свое прежнее значение. Например: int x; // глобальное x f() { int x; // локальное x прячет глобальное x x = 1; // присвоить локальному x { int x; // прячет первое локальное x x = 2; // присвоить второму локальному x } x = 3; // присвоить первому локальному x } int* p = &x; // взять адрес глобального x Скрытие имен неизбежно при написании больших программ. Однако читающий человек легко может не заметить, что имя скрыто, и некоторые ошибки, возникающие вследствие этого, очень трудно |
|
|