Переменные далее классифицируются на «локальные» и «глобальные» переменные, что является основной темой нашего обсуждения. Здесь основное различие между локальной и глобальной переменной заключается в том, что локальная переменная объявляется внутри функционального блока, а глобальная переменная объявляется вне функций в программе.
Давайте изучим еще несколько различий между локальной и глобальной переменной вместе с диаграммой сравнения.
Сравнительная таблица:
Основа для сравнения | Локальная переменная | Глобальная переменная |
---|---|---|
декларация | Переменные объявляются внутри функции. | Переменные объявляются вне любой функции. |
Объем | Внутри функции, внутри которой они объявлены. | На протяжении всей программы. |
Доступ | Доступ только к операторам внутри функции, в которой они объявлены. | Доступ к любому утверждению во всей программе. |
жизнь | Создается, когда функциональный блок вводится и уничтожается при выходе. | Оставайтесь в существовании в течение всего времени выполнения вашей программы. |
Место хранения | Локальные переменные хранятся в стеке, если не указано иное. | Хранится в фиксированном месте, определенном компилятором. |
Определение локальной переменной
Локальная переменная всегда объявляется внутри функционального блока. В C локальная переменная объявляется в начале блока кода. В C ++ они могут быть объявлены в любом месте блока кода перед их использованием. Доступ к локальным переменным возможен только с помощью операторов, написанных внутри функции, в которой объявлена локальная переменная. Они безопасны в том смысле, что к ним не могут получить доступ никакие другие функции той же программы.
Локальная переменная существует до тех пор, пока блок функции не будет выполнен, и, следовательно, уничтожается после выхода из блока. Локальные переменные теряют свое содержимое, как только выполнение покидает блок, в котором они объявлены.
Причина этого в том, что локальные переменные хранятся в стеке, если не указано их специальное хранилище. Стек является динамическим по своей природе, и изменение местоположения в памяти приводит к тому, что локальная переменная не сохраняет свое значение, как только существует блок функции.
Замечания:
Однако есть способ сохранить значение локальной переменной с помощью модификатора static.
Определение глобальной переменной
Глобальная переменная объявляется вне всех функций, присутствующих в программе. В отличие от локальных переменных, к глобальной переменной может обращаться любая функция, присутствующая в программе. Глобальные переменные не очень надежны, так как их значение может быть изменено любой функцией, присутствующей в программе.
Глобальные переменные существуют до тех пор, пока вся программа не будет выполнена полностью. Глобальные переменные сохраняют свои значения, пока программа не будет запущена. Причина в том, что они хранятся в фиксированной области памяти, определяемой компилятором.
Глобальная переменная полезна в ситуациях, когда несколько функций обращаются к одним и тем же данным. Использование большого количества глобальных переменных может быть проблематичным, так как могут быть нежелательные изменения значения глобальной переменной.
Ключевая разница между локальной и глобальной переменной.
- Локальные переменные называются «локальными», потому что они известны только операторам, написанным в функции, внутри которой они объявлены, и не известны любой другой функции, присутствующей вне этого функционального блока. В случае глобальной переменной они известны каждой функции, присутствующей в программе; следовательно, они называются «глобальными».
- Глобальные переменные сохраняют свое значение до тех пор, пока программа не находится в фазе выполнения, поскольку они хранятся в фиксированном месте, определяемом компилятором. Локальные переменные хранятся в стеке; следовательно, они не сохраняют свое значение, поскольку «стек» является динамическим по своей природе, но компилятор может быть направлен на сохранение их значения с помощью модификатора «статический».
- Если глобальная и локальная переменные объявлены с одним и тем же именем, то все операторы блока кода, в котором объявлена локальная переменная, будут ссылаться только на локальную переменную и не будут влиять на глобальную переменную.
- Локальная переменная уничтожается, когда управление выходом программы выходит из блока, в котором объявлена локальная переменная. Однако глобальная переменная уничтожается, когда завершается вся программа.
Заключение:
Локальные и глобальные переменные одинаково необходимы при написании программы. Но объявление большого количества глобальных переменных может быть проблематичным в большой программе, так как это может вызвать нежелательные изменения в глобальной переменной; и стало бы трудно определить, какая часть программы внесла это изменение. Следовательно, следует избегать объявления ненужных глобальных переменных.