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

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 10 Май 2024
Anonim
Область видимости. Глобальные переменные и локальные переменные. C++ для начинающих. Урок #37
Видео: Область видимости. Глобальные переменные и локальные переменные. C++ для начинающих. Урок #37

Содержание


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

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

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

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. преимущества
  5. Недостатки
  6. Вывод

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

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

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

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


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

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

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

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

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


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

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

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

преимущества

Локальная переменная

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

Глобальная переменная

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

Недостатки

Локальная переменная

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

Глобальная переменная

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

Вывод:

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