Шаг 50.
Автоматический класс памяти (auto)

    На этом шаге мы рассмотрим часто используемый класс памяти: класс auto.

    Для возврата из функции нескольких значений можно использовать глобальные переменные. В этом случае кроме изученных ранее характеристик переменных (имя, тип, значение), используется еще одна - класс памяти.

    Класс памяти характеризует время существования и область действия объекта в программе. Перечислим имена классов памяти:

    Остановимся более подробно на автоматическом классе памяти (auto).

    Объекты, описанные внутри блока:

относятся к объектам автоматического класса памяти (автоматическим объектам).

    Автоматические объекты являются локальными по отношению к блоку, и их значения хранятся внутри того блока, где они описаны. Автоматические объекты существуют только во время выполнения данного блока и теряют свои значения при выходе из него. При каждом вхождении в блок им присваиваются начальные значения, если они заданы в описании. Если начальные значения не заданы, то значения автоматических объектов при входе в блок не определены.

    Автоматические переменные инициализируются всякий раз при входе в функцию или блок. Для автоматических переменных инициализирующее выражение не обязательно должно быть константой: оно может быть любым выражением, включающим определенные ранее величины и обращения к функциям. По своему действию инициализация автоматических переменных является сокращенной записью оператора присваивания.

    Пример. Результат работы следующей программы не определен, так как в функции P() значение переменной a не определено.

#include <iostream.h>
void main ()
   {
      auto int a=6;
      void P();
      /* -- */
      P();
   }
  /* --- */
void P()
   {
      auto int a;
      cout << a << endl;
   }
Текст этой программы можно взять здесь.

    На следующем шаге мы познакомимся с внешним классом памяти (extern).


Предыдущий шаг Содержание Следующий шаг