Регистровая переменная — автоматическая переменная, располагаемая, по возможности, на машинном регистре.
Для объявления регистровой переменной используется ключевое слово register. В этом случае переменная запоминается на машинном регистре, а не на стеке. Количество регистров, доступных для такого использования, является машинно-зависимым. Если потребность в регистровой памяти превышает число доступных аппаратных регистров, избыточные регистровые переменные трактуются как автоматические. В этом случае ключевое слово register попросту игнорируется.
Регистровые переменные рекомендуется использовать для повышения быстродействия программы. Лучшими кандидатами на регистровые переменные являются переменные, к которым осуществляется частый доступ, такие как счетчики циклов или индексов массивов.
Автоматические переменные и формальные параметры функции могут быть объявлены с классом памяти register. Внешние и статические переменные не могут быть регистровыми. Допустимые типы данных также зависят от системы, обычно это следующие типы данных: char, int и указатели. Массив не может запоминаться в регистре. Регистровые переменные имеют такие же область действия и время жизни, что и автоматические переменные. Операция & (операция получения адреса) не может быть применима к регистровой переменной.
Пример 1
f (register int count, register int num)
  {
   register int i;
   . . .
  }