1.3.1 Имена, переменные и константы

       Основная идея всех языков программирования состоит в использовании объектов и операций (функций, процедур, методов) над этими объектами. Простейшими представителями объектов являются переменные.
Любая переменная обладает несколькими характеристиками: временем жизни, областью действия, именем, значением, типом. Первые две характеристики зависят от места и способа описания переменной.
       Переменные можно описывать вне функций (такие переменные называются глобальными). Их время жизни – вся программа, а область действия – весь файл, в котором они описаны, начиная с точки описания. Глобальные переменные при инициализации обнуляются, например, int i=0.
Переменная, описанная внутри функции или внутри блока, называется локальной. Для нее выделяется память, а область действия и время жизни ограничены блоком, где она описана.
      Кроме этого определены статические переменные (static). Они существуют на протяжении всей программы и инициируются однократно (т.е. сохраняют значение), но видны только в своем блоке.
      Динамические переменные - это переменные, память под которые резервируется с помощью операции new в динамической области памяти. Доступ к ним осуществляется не по имени, а по специальным переменным, называемым указателями.
       При трансляции программы под объекты выделяется 5 основных типов памяти: область глобальных переменных, свободная или динамически распределяемая память, регистровая память, память сегмента программы и стековая память.
      Локальные переменные и параметры функции размещаются в стековой памяти, глобальные- в глобальной, внутренние служебные переменные –в регистрах, остальные- в свободной памяти.
      Динамическая память в отличие от других типов памяти не имеет имен и к ней можно обращаться только по адресу через указатель. Для выделения памяти в динамической области используется оператор new, который возвращает адрес начала области, отведенной под переменную. Например,
Unsigned short int * ppointer;
Ppointer=new unsigned short int;
      Для занесения в эту память значения используют конструкцию вида
*ppointer=<значение>;
      После работы с такой переменной нужно освободить место в памяти с помощью оператора delete <имя указателя>, что освобождает область по адресу находящемуся в указателе ppoiner.
      Имена переменных могут быть произвольными по длине, но компилятор различает прописные и заглавные буквы.
      Константы в программе не меняются, после того как их задали:
const int words =65 000;
const float dot = 53;