До сих пор мы объявили переменные в простейшем виде. Объявление переменных состоит из двух частей.
Выход
0 2 4
- Тип данных переменной
- Хранение переменной
До сих пор мы просто объявляем тип данных переменной.
Означает ли это, что нет класса хранения переменных, который мы объявили до сих пор?
Ну, ответ определенно Нет, потому что мы не можем объявить переменную без ее класса хранения. По умолчанию некоторые классы хранения добавляются автоматически, если мы не объявляем классы хранения явно.
Ну, ответ определенно Нет, потому что мы не можем объявить переменную без ее класса хранения. По умолчанию некоторые классы хранения добавляются автоматически, если мы не объявляем классы хранения явно.
Что такое классы хранения в C?
Как я уже говорил ранее, при объявлении переменных для этой переменной резервируется некоторое пространство. Класс хранения - это свойство, которое решает, что зарезервировано пространство. Есть два места, где место зарезервировано для переменных. Один - это память, а другой - регистр.
Класс хранения переменной определяет
- Место, где должна храниться переменная
- Значение по умолчанию или начальное значение переменной
- Область действия переменной
- Жизнь переменной
Существует четыре класса хранения на языке Си, и я определю все из них на основе вышеуказанных факторов.
Класс автоматического хранения
Хранение: Память.
Начальное значение: Любое значение мусора.
Область действия: локально для блока, в котором определена переменная.
Срок действия: До тех пор, пока элемент управления не останется в блоке, в котором он определен.
Начальное значение: Любое значение мусора.
Область действия: локально для блока, в котором определена переменная.
Срок действия: До тех пор, пока элемент управления не останется в блоке, в котором он определен.
Синтаксис: auto int x;
Если мы не указываем класс хранения переменной, то по умолчанию он находится в классе автоматического хранения. Вы можете увидеть это в приведенном выше примере.
Зарегистрировать класс хранения
Память: регистры процессора.
Начальное значение: любое значение мусора.
Область действия: локально для блока, в котором определена переменная.
Life: до тех пор, пока элемент управления не останется в блоке, в котором он определен.
Начальное значение: любое значение мусора.
Область действия: локально для блока, в котором определена переменная.
Life: до тех пор, пока элемент управления не останется в блоке, в котором он определен.
Синтаксис: зарегистрируйте int x;
Переменная, определенная как регистр, сохраняется в регистрах процессора. Мы определяем переменную как регистр, когда нам нужно часто обращаться к ней в нашей программе. Поскольку регистры ограничены, поэтому, когда регистр недоступен, переменная сохраняется в памяти.
Статический класс хранения
Хранение: Память.
Начальное значение: 0 (ноль).
Область: локальная для блока, в котором определена переменная.
Жизнь: переменная существует во время различных вызовов функций.
Начальное значение: 0 (ноль).
Область: локальная для блока, в котором определена переменная.
Жизнь: переменная существует во время различных вызовов функций.
Синтаксис: static int x;
Выход
0 2 4
В приведенной выше программе я объявил переменную x как статическую, ее начальное значение равно 0. Я вызывал функцию fun () там раз. Я увеличиваю значение x на 2. В выводе видно, что значение переменной x не потеряно. Он остается в памяти при различных вызовах функций.
Класс внешнего хранилища
Хранение: Память
Начальное значение: 0 (ноль)
Область: Глобальная.
Жизнь: в течение всего выполнения программы
Начальное значение: 0 (ноль)
Область: Глобальная.
Жизнь: в течение всего выполнения программы
Синтаксис: extern int x;
Переменная с внешним классом хранения может быть определена вне всех функций. Так что он будет доступен для каждой функции на протяжении всего выполнения программы. Это также может быть определено внутри определенной функции.
Классы хранения в C (нажмите на картинку для увеличения) - Источник изображения |
Примечание: static, register, auto и extern - ключевые слова, которые используются для указания некоторого класса хранилища. Эти классы хранения также можно использовать для определения функций.
Комментариев нет:
Отправить комментарий