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

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

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

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

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

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

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


Топ Статии

Категория

Интересни Статии