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