Різниця між локальною та глобальною змінною
Ключові відмінності між локальною змінною та глобальною змінною
- Локальна змінна оголошується всередині функції, тоді як глобальна змінна оголошується поза нею.
- Локальні змінні створюються, коли функція починає виконання, і втрачаються, коли функція завершується, з іншого боку, глобальна змінна створюється, коли починається виконання, і втрачається, коли програма завершується.
- Локальна змінна не забезпечує обмін даними, тоді як глобальна змінна забезпечує обмін даними.
- Локальні змінні зберігаються в стеку, тоді як глобальна змінна зберігається у фіксованому місці, визначеному компілятором.
- Передача параметрів потрібна для локальних змінних, тоді як для глобальної змінної це не потрібно
Що таке змінна?
Змінна — це ім’я, призначене для області зберігання, якою програма може керувати. Тип змінної визначає розмір і розташування пам'яті змінної.
Він також визначає діапазон значень, які потрібно зберігати в цій пам’яті, і характер операцій, які можна застосувати до цієї змінної.
Область змінних
Область змінної – це просто час існування змінної. Це блок коду, під яким змінна застосовна або жива. Наприклад:
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» — глобальні змінні.
Локальна змінна проти глобальних змінних
Ось деякі фундаментальні відмінності між локальними та глобальними змінними.
Параметр | Місцевий | Глобальний |
---|---|---|
Сфера | Він оголошується всередині функції. | Він оголошується поза функцією. |
значення | Якщо його не ініціалізовано, зберігається сміттєве значення | Якщо він не ініціалізований, нуль зберігається за умовчанням. |
Тривалість Життя | Він створюється, коли функція починає виконання, і втрачається, коли функції завершуються. | Він створюється перед початком глобального виконання програми та втрачається, коли програма завершується. |
Обмін даними | Обмін даними неможливий, оскільки доступ до даних локальної змінної може отримати лише одна функція. | Спільне використання даних можливе, оскільки кілька функцій можуть отримати доступ до однієї глобальної змінної. |
Параметри | Передача параметрів потрібна, щоб локальні змінні отримували доступ до значення в іншій функції | Передача параметрів не є обов’язковою для глобальної змінної, оскільки вона видима в усій програмі |
Модифікація значення змінної | Коли значення локальної змінної змінюється в одній функції, зміни не видно в іншій функції. | Коли значення глобальної змінної змінюється в одній функції, зміни видно в решті програми. |
Доступ до | Доступ до локальних змінних можна отримати за допомогою операторів усередині функції, в якій вони оголошені. | Ви можете отримати доступ до глобальних змінних за допомогою будь-якого оператора в програмі. |
Зберігання пам'яті | Він зберігається в стеку, якщо не вказано. | Він зберігається у фіксованому місці, визначеному компілятором. |
Переваги використання глобальних змінних
- Ви можете отримати доступ до глобальної змінної з усіх функцій або модулів у програмі
- Вам потрібно лише один раз оголосити глобальну змінну поза модулями.
- Його ідеально використовувати для зберігання «констант», оскільки це допомагає підтримувати послідовність.
- Глобальна змінна корисна, коли кілька функцій мають доступ до тих самих даних.
Переваги використання локальних змінних
- Використання локальних змінних гарантує, що значення змінних залишаться незмінними під час виконання завдання
- Якщо кілька завдань змінюють одну змінну, яка виконується одночасно, результат може бути непередбачуваним. Але оголошення її як локальної змінної вирішує цю проблему, оскільки кожне завдання створюватиме власний екземпляр локальної змінної.
- Ви можете давати локальним змінним однакові назви в різних функціях, оскільки вони розпізнаються лише тією функцією, у якій вони оголошені.
- Локальні змінні видаляються, як тільки будь-яка функція завершується, і звільняється простір пам’яті, який вона займає.
Недоліки використання глобальних змінних
- Забагато змінних оголошено як глобальні, тому вони залишаються в пам’яті до завершення виконання програми. Це може спричинити проблему браку пам’яті.
- Дані можна змінити будь-якою функцією. Будь-який оператор, написаний у програмі, може змінити значення глобальної змінної. Це може призвести до непередбачуваних результатів у багатозадачному середовищі.
- Якщо глобальні змінні припинено через рефакторинг коду, вам потрібно буде змінити всі модулі, де вони викликаються.
Недоліки використання локальних змінних
- Процес налагодження локальної змінної досить складний.
- Загальні дані потрібно передавати багаторазово, оскільки обмін даними між модулями неможливий.
- Вони мають дуже обмежену сферу застосування.
Що корисніше?
Локальна та глобальна змінні однаково важливі при написанні програми будь-якою мовою. Однак велика кількість глобальних змінних може займати величезну пам'ять. Стало важко ідентифікувати небажану зміну глобальних змінних. Тому бажано уникати оголошення небажаних глобальних змінних.