Рекомендуємо, 2024

Вибір Редакції

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

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

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

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

Діаграма порівняння:

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

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

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

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

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

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

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

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

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

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

Ключова різниця між локальною та глобальною змінною.

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

Висновок:

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

Top