Автоматические переменные

Переменные, декларированные внутри функций, являются внутренними и называются локальными переменными. Никакая другая функция не имеет прямого доступа к ним. Такие объекты существуют временно на этапе активности функции.

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

По умолчанию, локальные объекты, объявленные в теле функции, имеют атрибут класса памяти auto.

Принадлежность к этому классу можно также подчеркнуть явно с помощью ключевого слова auto. Например:

void main(void) {

auto int max, lin;

... }

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

Регистровая память (атрибут register) - объекты целого типа и символы рекомендуется разместить не в оперативной памяти, а в регистрах общего назначения (процессора), а при нехватке регистров - в стековой памяти (размер объекта не должен превышать разрядности регистра), для других типов компилятор может использовать другие способы размещения, а может просто проигнорировать данную рекомендацию.

Регистровая память позволяет увеличить быстродействие программы, но к размещаемым в ней объектам в языке Си (но не С++) не применима операция адресации &, а также это неприменимо для массивов, структур, объединений и переменных с плавающей точкой.