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

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 15 Травень 2024
Anonim
Практика 1
Відеоролик: Практика 1

Зміст


Як ми обговорювали раніше, змінна - це ім'я, вказане місце в пам'яті, і воно повинно бути оголошено перед його використанням. В C всі змінні оголошуються при запуску програми. У C ++ змінні можуть бути оголошені в будь-який момент часу, перш ніж їх використовувати в інструкціях.

Змінні класифікуються на "локальну" та "глобальну" змінну, що є основною темою нашої дискусії. Тут головна відмінність локальної та глобальної змінної полягає в тому, що локальна змінна оголошується всередині функціонального блоку. На відміну від цього, глобальна змінна оголошується поза функціями програми.

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

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Переваги
  5. Недоліки
  6. Висновок

Порівняльна діаграма:

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

Визначення локальної змінної

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


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

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

Примітка:
Однак існує спосіб зберегти значення локальної змінної, використовуючи модифікатор 'статичний'.

Визначення глобальної змінної

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


Вони залишаються, поки вся програма не буде повністю виконана. Глобальні змінні зберігають свої значення до запуску програми. Причина полягає в тому, що вони зберігаються у фіксованій області пам’яті, що визначається компілятором.

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

  1. Локальні змінні називаються "локальними", оскільки їм відомі лише заяви, записані у функції, всередині якої вони оголошені, і не відомі жодній іншій функції, присутній поза цим функціональним блоком. У випадку глобальної змінної вони відомі кожній функції, присутній у програмі; отже, їх називають "глобальними".
  2. Глобальні змінні зберігають своє значення до тих пір, поки програма не перебуває у фазі виконання, оскільки вони зберігаються у визначеному місці, визначеному компілятором. Локальні змінні зберігаються в стеку; отже, вони не зберігають свого значення, оскільки "стек" є динамічним за своєю суттю, але компілятор може бути спрямований на збереження їх значення за допомогою "статичного" модифікатора.
  3. Якщо глобальна та локальна змінна оголошуються з тим самим іменем, то всі висловлювання блоку коду, в якому оголошена локальна змінна, стосуватимуться лише локальної змінної і не спричинять ефекту до глобальної змінної.
  4. Локальна змінна руйнується, коли керування програмою виходить із блоку, в якому оголошується локальна змінна. Однак глобальна змінна знищується, коли вся програма припиняється.

Переваги

Локальна змінна

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

Глобальна змінна

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

Недоліки

Локальна змінна

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

Глобальна змінна

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

Висновок:

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