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

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

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

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

Что такое переменная?

Переменная — это имя, присвоенное области хранения, которой может манипулировать программа. Тип переменной определяет размер и расположение памяти переменной.

Он также определяет диапазон значений, которые необходимо хранить в этой памяти, и характер операций, которые можно применять к этой переменной.

Объем переменных

Область действия переменной — это просто время жизни переменной. Это блок кода, в котором переменная применима или активна. Например:

function foo(){
var x;
}

Вы объявляете переменную «x» внутри функции «foo». Область действия этой переменной остается внутри этой функции, ее нельзя использовать вне этой функции.
Есть три места, где можно объявить переменные языка программирования:

  • Внутри функции или блока: локальные переменные
  • Вне всех функций: глобальные переменные.
  • В определении параметров функции: Формальные параметры

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

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

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

public int add(){
int a =4;
int b=5;
return a+b;
}

Здесь «a» и «b» — локальные переменные.

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

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

Пример:

int a =4;
int b=5;
public int add(){
return a+b;
}

Здесь «a» и «b» — глобальные переменные.

Локальная переменная против глобальных переменных

Вот некоторые фундаментальные различия между локальными и глобальными переменными.

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

Преимущества использования глобальных переменных

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

Преимущества использования локальных переменных

  • Использование локальных переменных дает гарантию того, что значения переменных останутся неизменными во время выполнения задачи.
  • Если несколько задач изменяют одну переменную, выполняющуюся одновременноneoОбычно, то результат может быть непредсказуемым. Но объявление ее как локальной переменной решает эту проблему, поскольку каждая задача будет создавать свой собственный экземпляр локальной переменной.
  • Вы можете давать локальным переменным одинаковые имена в разных функциях, поскольку они распознаются только той функцией, в которой они объявлены.
  • Локальные переменные удаляются, как только какая-либо функция завершается, и освобождают пространство памяти, которое она занимает.

Недостатки использования глобальных переменных

  • Слишком много переменных объявлено как глобальные, поэтому они остаются в памяти до завершения выполнения программы. Это может вызвать проблему нехватки памяти.
  • Данные могут быть изменены с помощью любой функции. Любой оператор, написанный в программе, может изменить значение глобальной переменной. Это может дать непредсказуемые результаты в многозадачных средах.
  • Если глобальные переменные будут прекращены из-за рефакторинга кода, вам придется изменить все модули, в которых они вызываются.

Недостатки использования локальных переменных

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

Что полезнее?

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