Здавалка
Главная | Обратная связь

Переменные, объявленные внутри блока-оператора, существуют только в пределах этого блока. Область их видимости ограничена местом их объявления.



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 останется таким же, а объявление МАХ истинной константой даст определенные преимущества.

• Компилятор сможет выполнить проверку типов с МАХ более строго. С++ распознает, что константа МАХ
имеет тип int, в то время как компилятор ничего не знает о типе текстового макроса МАХ.

• Turbo Debugger распознает истинную константу МАХ. Отладчикне распознает символьные константы, созданные с помощью #define.

Все это необходимо иметь в виду. К несчастью, истинная константа МАХ нуждается в постоянном месте хранения в сегменте данных программы. Многочисленные программные константы могут занимать сотни ты­сяч байтов, расходуя тем самым память. Более того, использование таких значений может потребовать отни­мающих время обращений к памяти.

Обычно символьные константы используются как эффективные коман­ды, загружающие значения прямо в регистры.

Истинные константы полезны в том случае, если они используются как переменные, значения которых в процессе выполнения программы не подлежат изменению.

 

Их преимущества не настолько велики, чтобы совсем отказываться от #define.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.