Для регістрових змінних ініціалізує...

На цьому етапі ми познайомимося з реєстровими змінними.

Об'єкти, описані всередині блоку з класом пам'ятіregister, називаютьсяреєстровими змінними. Вони підкоряються всім правилам, що стосуються автоматичних змінних. Описregisterвказує компілятору, що ця змінна буде часто використовуватися.

Опис може виглядати, наприклад, так:

Використання регістрових змінних призводить до менших за розмірами та більш швидкими програмами.

Компілятор C++ автоматично виконує оптимальний розподіл регістрів відповідно до потоку даних. Цим знято необхідність обов'язкового вказівки змінних програми як регістрових, так що описregisterідентичний за змістом описуautoі жодного іншого сенсу не має.

Реєстровий клас пам'яті можуть мати лише прості змінні (char, int, покажчики і т.д.). Регістрові змінні ініціалізуються щоразу під час входу у функцію чи блок. Для регістрових змінних ініціалізуючий вираз не обов'язково має бути константою: він може бути будь-яким виразом, що включає певні раніше величини та звернення до функцій.

Якщо явна ініціалізація відсутня, то регістрові змінні мають у разі невизначені значення.

Слід зазначити, що не обов'язково всі реєстрові змінні дійсно зберігатимуться в регістрах. Компілятор повинен порівняти ваші вимоги з кількістю доступних регістрів, тому ви можете не отримати те, що хочете. У цьому випадку змінна стає простою автоматичною.

Таким чином, клас пам'яті визначає область дії змінної та тривалість її існування у пам'яті. Клас пам'яті встановлюється при описі змінної звідповідним ключовим словом. Змінні, визначені поза функцією, є автоматичними і локальними, якщо не використовуються інші ключові слова. Зовнішні змінні, певні функції, доступні їй, навіть якщо не описані всередині неї.