Переменные, объявленные внутри блока-оператора, существуют только в пределах этого блока. Область их видимости ограничена местом их объявления.
if (expression) { int count = 0; // Объявление переменной в области действия // оператора if ... } cout << "count == " << count « '\n'; // ??? ОШИБКА!!!! При компиляции последняя строка вызовет сообщение об ошибке, поскольку переменная count объявлена вне области видимости оператора if, она не существует вне ее.
Бывает полезно одновременно объявлять и инициализировать переменную, управляющую циклом for.
типичный цикл выглядит так: void f() { int i; for (i=0; i<MAX; i++) } В С++ можно объявить переменную для цикла непосредственно внутри него, сократив код до следующего: Void f() { for (int i=0; i<MAX; i++) ... } Однако такое объявление действует не только в пределах видимости цикла for. Инициализация управляющей переменной (в данном случае i=0;) выполняется до того, как начнется цикл, таким образом, i в данном примере нопадает в область видимости f() и может использоваться любыми операторами, следующими за for.
Константы
Константы — новшество языка С++, заимствованное языком C. Объявление переменных с ключевым словом const создает вокруг них "силовое поле", предохраняющее их от изменения во время выполнения программы.
ПРИМЕР: Если вы объявили целую переменную countследующим образом: const int count =1234; Компилятор выдаст сообщение об ошибке в операторе count++; //??? Некоторые программисты рекомендуют использовать объявления const вместо символьных констант, созданных с помощью #define. Символьная константа #define МАХ 100 определяет макрос с именем МАХ, связанный с текстом 100 (не целым значением 100). Если МАХ используется следующим образом: for (int i=0; i<MAX; i++) … то компилятор заменит МАХ на текстовые цифры 100 и скомпилирует оператор так, как будто вы ввели эти цифры в этом месте. Некоторые эксперты по С++ утверждают, что легко сделать ошибку при использовании символьных констант, подобных МАХ. Сторонники объявления const скорее предложат вам следующее: const int MAX = 100; Цикл for останется таким же, а объявление МАХ истинной константой даст определенные преимущества. • Компилятор сможет выполнить проверку типов с МАХ более строго. С++ распознает, что константа МАХ • Turbo Debugger распознает истинную константу МАХ. Отладчикне распознает символьные константы, созданные с помощью #define. Все это необходимо иметь в виду. К несчастью, истинная константа МАХ нуждается в постоянном месте хранения в сегменте данных программы. Многочисленные программные константы могут занимать сотни тысяч байтов, расходуя тем самым память. Более того, использование таких значений может потребовать отнимающих время обращений к памяти. Обычно символьные константы используются как эффективные команды, загружающие значения прямо в регистры. Истинные константы полезны в том случае, если они используются как переменные, значения которых в процессе выполнения программы не подлежат изменению.
Их преимущества не настолько велики, чтобы совсем отказываться от #define. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|