Різниця між локальною та глобальною змінною

Ключові відмінності між локальною змінною та глобальною змінною

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

Різниця між локальною та глобальною змінною

Що таке змінна?

Змінна — це ім’я, призначене для області зберігання, якою програма може керувати. Тип змінної визначає розмір і розташування пам'яті змінної.

Він також визначає діапазон значень, які потрібно зберігати в цій пам’яті, і характер операцій, які можна застосувати до цієї змінної.

Область змінних

Область змінної – це просто час існування змінної. Це блок коду, під яким змінна застосовна або жива. Наприклад:

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» — глобальні змінні.

Локальна змінна проти глобальних змінних

Ось деякі фундаментальні відмінності між локальними та глобальними змінними.

Параметр Місцевий Глобальний
Сфера Він оголошується всередині функції. Він оголошується поза функцією.
значення Якщо його не ініціалізовано, зберігається сміттєве значення Якщо він не ініціалізований, нуль зберігається за умовчанням.
Тривалість Життя Він створюється, коли функція починає виконання, і втрачається, коли функції завершуються. Він створюється перед початком глобального виконання програми та втрачається, коли програма завершується.
Обмін даними Обмін даними неможливий, оскільки доступ до даних локальної змінної може отримати лише одна функція. Спільне використання даних можливе, оскільки кілька функцій можуть отримати доступ до однієї глобальної змінної.
Параметри Передача параметрів потрібна, щоб локальні змінні отримували доступ до значення в іншій функції Передача параметрів не є обов’язковою для глобальної змінної, оскільки вона видима в усій програмі
Модифікація значення змінної Коли значення локальної змінної змінюється в одній функції, зміни не видно в іншій функції. Коли значення глобальної змінної змінюється в одній функції, зміни видно в решті програми.
Доступ до Доступ до локальних змінних можна отримати за допомогою операторів усередині функції, в якій вони оголошені. Ви можете отримати доступ до глобальних змінних за допомогою будь-якого оператора в програмі.
Зберігання пам'яті Він зберігається в стеку, якщо не вказано. Він зберігається у фіксованому місці, визначеному компілятором.

Переваги використання глобальних змінних

  • Ви можете отримати доступ до глобальної змінної з усіх функцій або модулів у програмі
  • Вам потрібно лише один раз оголосити глобальну змінну поза модулями.
  • Його ідеально використовувати для зберігання «констант», оскільки це допомагає підтримувати послідовність.
  • Глобальна змінна корисна, коли кілька функцій мають доступ до тих самих даних.

Переваги використання локальних змінних

  • Використання локальних змінних гарантує, що значення змінних залишаться незмінними під час виконання завдання
  • Якщо кілька завдань змінюють одну змінну, яка виконується одночасно, результат може бути непередбачуваним. Але оголошення її як локальної змінної вирішує цю проблему, оскільки кожне завдання створюватиме власний екземпляр локальної змінної.
  • Ви можете давати локальним змінним однакові назви в різних функціях, оскільки вони розпізнаються лише тією функцією, у якій вони оголошені.
  • Локальні змінні видаляються, як тільки будь-яка функція завершується, і звільняється простір пам’яті, який вона займає.

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

  • Забагато змінних оголошено як глобальні, тому вони залишаються в пам’яті до завершення виконання програми. Це може спричинити проблему браку пам’яті.
  • Дані можна змінити будь-якою функцією. Будь-який оператор, написаний у програмі, може змінити значення глобальної змінної. Це може призвести до непередбачуваних результатів у багатозадачному середовищі.
  • Якщо глобальні змінні припинено через рефакторинг коду, вам потрібно буде змінити всі модулі, де вони викликаються.

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

  • Процес налагодження локальної змінної досить складний.
  • Загальні дані потрібно передавати багаторазово, оскільки обмін даними між модулями неможливий.
  • Вони мають дуже обмежену сферу застосування.

Що корисніше?

Локальна та глобальна змінні однаково важливі при написанні програми будь-якою мовою. Однак велика кількість глобальних змінних може займати величезну пам'ять. Стало важко ідентифікувати небажану зміну глобальних змінних. Тому бажано уникати оголошення небажаних глобальних змінних.