На этом шаге мы рассмотрим часто используемый класс памяти: класс
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).