Рекомендуем, 2024

Выбор редакции

Разница между локальной и глобальной переменной

Как мы уже обсуждали ранее, переменная - это имя, присвоенное ячейке памяти, и оно должно быть объявлено перед использованием. В Си все переменные объявляются при запуске программы. В C ++ переменные могут быть объявлены в любой момент времени, прежде чем они будут использованы в инструкциях.

Переменные далее классифицируются на «локальные» и «глобальные» переменные, что является основной темой нашего обсуждения. Здесь основное различие между локальной и глобальной переменной заключается в том, что локальная переменная объявляется внутри функционального блока, а глобальная переменная объявляется вне функций в программе.

Давайте изучим еще несколько различий между локальной и глобальной переменной вместе с диаграммой сравнения.

Сравнительная таблица:

Основа для сравненияЛокальная переменнаяГлобальная переменная
декларацияПеременные объявляются внутри функции.Переменные объявляются вне любой функции.
ОбъемВнутри функции, внутри которой они объявлены.На протяжении всей программы.
ДоступДоступ только к операторам внутри функции, в которой они объявлены.Доступ к любому утверждению во всей программе.
жизньСоздается, когда функциональный блок вводится и уничтожается при выходе.Оставайтесь в существовании в течение всего времени выполнения вашей программы.
Место храненияЛокальные переменные хранятся в стеке, если не указано иное.Хранится в фиксированном месте, определенном компилятором.

Определение локальной переменной

Локальная переменная всегда объявляется внутри функционального блока. В C локальная переменная объявляется в начале блока кода. В C ++ они могут быть объявлены в любом месте блока кода перед их использованием. Доступ к локальным переменным возможен только с помощью операторов, написанных внутри функции, в которой объявлена ​​локальная переменная. Они безопасны в том смысле, что к ним не могут получить доступ никакие другие функции той же программы.

Локальная переменная существует до тех пор, пока блок функции не будет выполнен, и, следовательно, уничтожается после выхода из блока. Локальные переменные теряют свое содержимое, как только выполнение покидает блок, в котором они объявлены.

Причина этого в том, что локальные переменные хранятся в стеке, если не указано их специальное хранилище. Стек является динамическим по своей природе, и изменение местоположения в памяти приводит к тому, что локальная переменная не сохраняет свое значение, как только существует блок функции.

Замечания:
Однако есть способ сохранить значение локальной переменной с помощью модификатора static.

Определение глобальной переменной

Глобальная переменная объявляется вне всех функций, присутствующих в программе. В отличие от локальных переменных, к глобальной переменной может обращаться любая функция, присутствующая в программе. Глобальные переменные не очень надежны, так как их значение может быть изменено любой функцией, присутствующей в программе.

Глобальные переменные существуют до тех пор, пока вся программа не будет выполнена полностью. Глобальные переменные сохраняют свои значения, пока программа не будет запущена. Причина в том, что они хранятся в фиксированной области памяти, определяемой компилятором.

Глобальная переменная полезна в ситуациях, когда несколько функций обращаются к одним и тем же данным. Использование большого количества глобальных переменных может быть проблематичным, так как могут быть нежелательные изменения значения глобальной переменной.

Ключевая разница между локальной и глобальной переменной.

  1. Локальные переменные называются «локальными», потому что они известны только операторам, написанным в функции, внутри которой они объявлены, и не известны любой другой функции, присутствующей вне этого функционального блока. В случае глобальной переменной они известны каждой функции, присутствующей в программе; следовательно, они называются «глобальными».
  2. Глобальные переменные сохраняют свое значение до тех пор, пока программа не находится в фазе выполнения, поскольку они хранятся в фиксированном месте, определяемом компилятором. Локальные переменные хранятся в стеке; следовательно, они не сохраняют свое значение, поскольку «стек» является динамическим по своей природе, но компилятор может быть направлен на сохранение их значения с помощью модификатора «статический».
  3. Если глобальная и локальная переменные объявлены с одним и тем же именем, то все операторы блока кода, в котором объявлена ​​локальная переменная, будут ссылаться только на локальную переменную и не будут влиять на глобальную переменную.
  4. Локальная переменная уничтожается, когда управление выходом программы выходит из блока, в котором объявлена ​​локальная переменная. Однако глобальная переменная уничтожается, когда завершается вся программа.

Заключение:

Локальные и глобальные переменные одинаково необходимы при написании программы. Но объявление большого количества глобальных переменных может быть проблематичным в большой программе, так как это может вызвать нежелательные изменения в глобальной переменной; и стало бы трудно определить, какая часть программы внесла это изменение. Следовательно, следует избегать объявления ненужных глобальных переменных.

Top