logo

Разлика между локална променлива и глобална променлива

Променливите във всеки език за програмиране имат решаваща роля. Променливите се класифицират на глобални променливи и локални променливи въз основа на техния обхват. Основната разлика между глобалните и локалните променливи е, че глобалните променливи могат да бъдат достъпни глобално в цялата програма, докато локалните променливи могат да бъдат достъпни само в рамките на функцията или блока, в който са дефинирани. В тази тема първо ще разберем какви са променливите и обхвата, заедно с локалните променливи, глобалните променливи и след това разликите между двете променливи.

Локална променлива срещу глобална променлива

Какво е променлива?

Променливата е име, дадено на място в паметта за съхраняване на стойности в компютърна програма. Използва се за съхраняване на информация, която може да бъде препращана и манипулирана в програма.

гигабайт срещу мегабайт

Можем да изберем произволно име за променливата, но то трябва да следва семантиката на програмирането. Такава, каквато може да бъде , a, b, x, y, z, sub, div, total, avg и др .

Да кажем, че има две стойности, 10 и 20, които искаме да съхраним и използваме в нашата програма. За целта трябва да използваме променлива и ще направим следните стъпки:

  • Първо ще създадем или декларираме променлива с подходящо име.
  • Присвоете тези стойности на променливите, за да ги съхраните.
  • След като тези стойности са съхранени, можем да използваме тези променливи с техните имена в нашата програма.
Локална променлива срещу глобална променлива

Както можем да видим на изображението по-горе, има два слота за памет, 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 две променливи в основната функция. Следователно това са локални променливи.

Предимства на локалната променлива

  • Едно и също име на локална променлива може да се използва в различни функции, тъй като се разпознава само от функцията, в която е декларирана.
  • Локалните променливи използват памет само за ограниченото време, когато функцията се изпълнява; след това същото място в паметта може да се използва повторно.

Недостатъци на локалните променливи

  • Обхватът на локалната променлива е ограничен само до нейната функция и не може да се използва от други функции.
  • Споделянето на данни от локалната променлива не е разрешено.

Сравнителна диаграма между глобална променлива и локална променлива

Глобална променлива Локална променлива
Глобалните променливи се декларират извън всички функционални блокове. Локалните променливи се декларират във функционален блок.
Обхватът остава в цялата програма. Обхватът е ограничен и остава само в рамките на функцията, в която са декларирани.
Всяка промяна в глобалната променлива засяга цялата програма, където и да се използва. Всяка промяна в локалната променлива не засяга други функции на програмата.
Глобална променлива съществува в програмата през цялото време, докато програмата се изпълнява. Локална променлива се създава, когато функцията се изпълнява, и след като изпълнението приключи, променливата се унищожава.
Той може да бъде достъпен в цялата програма от всички налични функции в програмата. Той може да бъде достъпен само от операторите на функцията, в които е деклариран, а не от другите функции.
Ако глобалната променлива не е инициализирана, тя приема нула по подразбиране. Ако локалната променлива не е инициализирана, тя приема стойността на боклука по подразбиране.
Глобалните променливи се съхраняват в сегмента с данни на паметта. Локалните променливи се съхраняват в стек в паметта.
Не можем да декларираме много променливи с едно и също име. Можем да декларираме различни променливи със същото име, но в други функции.

Примери за разбиране на разликите между локална и глобална променлива

Сега нека разберем примери в различни езици за програмиране, за да разберем по-добре разликата между локални и глобални променливи.

Местно срещу глобално в 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 

Както виждаме в горната програма, взехме а и 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, докато статичната променлива може да бъде достъпна чрез името на класа.