C++. Переменные
Пример описания целой переменной с именем а и вещественной переменной х:
int а; float х;Общий вид оператора описания переменных:
[класс памяти] [const] тип имя [инициализатор];Рассмотрим правила задания составных частей этого оператора.
• Необязательный класс памяти: auto, extern, static и register.
• Модификатор const -- значение переменной изменять нельзя. Это именованная константа.
• Можно описать переменную и тут же присвоить ей начальное значение (инициализировать)
Примеры:
short int а = 1; // целая переменная а const char С = 'С'; // символьная константа С char s. sf = 'f'; // инициализация относится только к sf char t (54); float с = 0.22, x(3), sum;Если тип инициализирующего значения не совпадает с типом переменной, выполняются преобразования типа.
Если переменная определена внутри блока (что блок ограничен фигурными скобками), она называется локальной, область ее действия — от точки описания до конца блока, включая все вложенные блоки.
Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца.
Для задания класса памяти используются следующие спецификаторы:
auto — автоматическая переменнаяПамять под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни — с момента описания до конца блока. Для глобальных переменных этот спецификатор не используется, а для локальных он принимается по умолчанию, поэтому задавать его явным образом большого смысла не имеет.
extern — определяется в другом месте программы (файле, позже)Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены.
static — статическая переменная.Время жизни — постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.
register — как auto, но память выделяется по возможности в регистрах процессора. Если возможности нет, то переменные обрабатываются как auto.Приведем стандартные примеры объявления переменных.
int а; // 1-я глобальная переменная а int main(){ int b; // 2-я локальная переменная b extern int X; // 3-я переменная x определена в другом месте static int с; // 4-я локальная статическая переменная с а = 1; // 5-я присваивание глобальной переменной int а; // 6-я локальная переменная а а = 2; // 7-я присваивание локальной переменной return 0; } int X = 4; // 8-я определение и инициализация х