logo

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

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

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

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

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

Ми можемо вибрати будь-яке ім’я для змінної, але воно має відповідати семантиці програмування. Такий, як може бути , a, b, x, y, z, sub, div, total, ag тощо .

Скажімо, є два значення, 10 і 20, які ми хочемо зберегти та використовувати в нашій програмі. Для цього нам потрібно використовувати змінну, і ми виконаємо наступні кроки:

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

Як ми можемо бачити на зображенні вище, є два слоти пам’яті, 001 і 002, і ми дали назви цим місцям як A і B. A містить 10, а B містить 20.

У різних мовах програмування різні способи оголошення змінної. Наприклад, у мові C ми можемо оголосити змінну таким чином:

Синтаксис: (синтаксис оголошення змінної мовою C)

 datatype v1, v2, v3,....; 

приклад:

 #include void main(){ int a; int b; int sum; } 

Область змінної

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

Область змінних може бути визначена за допомогою їх оголошення, а змінні оголошуються в основному двома способами:

    Глобальна змінна:Поза всіма функціямиЛокальна змінна:У функціональному блоці:

Що таке глобальна змінна?

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

приклад:

 #include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); } 

У наведеному вище прикладі a і b є глобальними змінними.

Переваги глобальної змінної

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

Недоліки глобальної змінної

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

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

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

приклад:

 #include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); } 

У наведеному вище прикладі ми оголосили x і y дві змінні всередині функції main. Отже, це локальні змінні.

Переваги локальної змінної

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

Недоліки локальних змінних

  • Область локальної змінної обмежена лише її функцією та не може використовуватися іншими функціями.
  • Спільне використання даних локальною змінною заборонено.

Порівняльна діаграма між глобальною змінною та локальною змінною

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

Приклади для розуміння відмінностей між локальною та глобальною змінною

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

Місцеве проти глобального в C

Приклад-1:

 #include // Global variables int a; int b; int Add() { return a + b; } int Mul() { int c=10; //Local Variable int d=20; ////Local Variable return c*d; } void main() { int Ans1, Ans2, c=30;// Local variable a = 50; b = 70; Ans1 = Add(); Ans2= Mul(); printf('The addition result is: %d
',Ans1); printf('The Multiplication result is: %d
',Ans2); printf('%d
', c); } 

Вихід:

 The addition result is: 120 The Multiplication result is: 200 30 

Як ми бачимо у наведеній вище програмі, ми взяли a і b глобальні змінні, доступ до яких здійснюється в різних функціях, таких як Add() і main(). У той час як існують також локальні змінні, такі як c, d, Ans1 і Ans2, до яких звертаються тільки ті функції, в яких вони оголошені.

Якщо ми спробуємо використати змінні c і d поза функцією Mul(), вони будуть використані як нові змінні. Як ми показали, взявши також c у функцію main(), вона розглядається як нова змінна.

Місцеві проти Глобальне в Python

Приклад-1:

 v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) func1() #calling func1 def func2(): print(v1) func2() #callin func2 

Вихід:

 Hey, I am a Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. 

У наведеній вище програмі ми взяли одну глобальну змінну v1 і одну локальну змінну v2. Оскільки v1 є глобальним, до нього можна легко отримати доступ у будь-якій функції, а v2 є локальним; він використовується лише в межах своєї заявленої функції. Але якщо ми спробуємо використати v1 у func1, це дасть помилку. Розглянемо наведений нижче приклад:

Приклад-2

 v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) print(v1) func1() #calling func1 def func2(): print(v1) print(v2) func2() #callin func2 

Якщо ми спробуємо отримати доступ до v1, до нього можна легко отримати доступ у fun1 і func2. Але якщо ми спробуємо отримати доступ до v2 поза його функцією, тобто у func2, це видасть помилку виконання. Після виконання наведеного вище коду ми отримаємо наведений нижче результат:

Помилка виконання:

 NameError: global name 'v2' is not defined 

Вихід:

 Hey, I am Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. Hey, I am Global Variable!, I can be used everywhere in the program. 

Місцеві проти Глобальна змінна в Java

У Java немає поняття глобальних змінних; Оскільки Java є об’єктно-орієнтованою мовою програмування, все є частиною класу. Але якщо ми хочемо зробити змінну глобально доступною, ми можемо зробити її статичною за допомогою a статичний Ключове слово.

 class Demo { // static variable static int a = 10; // non-static or local variable int b = 20; } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // accessing the non-static variable System.out.println('Value of non-static variable is: ' + (obj.b)); // accessing the static variable System.out.println('Value of static variable is:' + (Demo.a)); } } 

Вихід:

 Value of non-static variable is: 20 Value of static variable is:10 

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