logo

Razlika med lokalno spremenljivko in globalno spremenljivko

Spremenljivke v katerem koli programskem jeziku imajo ključno vlogo. Spremenljivke so glede na obseg razvrščene v globalne in lokalne spremenljivke. Glavna razlika med globalnimi in lokalnimi spremenljivkami je v tem, da je do globalnih spremenljivk mogoče dostopati globalno v celotnem programu, medtem ko je do lokalnih spremenljivk mogoče dostopati samo znotraj funkcije ali bloka, v katerem so definirane. V tej temi bomo najprej razumeli, kaj so spremenljivke in obseg, skupaj z lokalnimi spremenljivkami, globalnimi spremenljivkami in nato razlike med obema spremenljivkama.

Lokalna spremenljivka proti globalni spremenljivki

Kaj je spremenljivka?

Spremenljivka je ime, dano pomnilniški lokaciji za shranjevanje vrednosti v računalniškem programu. Uporablja se za shranjevanje informacij, na katere se je mogoče sklicevati in manipulirati v programu.

Za spremenljivko lahko izberemo poljubno ime, vendar mora slediti semantiki programiranja. Takšna, kot je lahko , a, b, x, y, z, sub, div, skupno, povprečje itd .

Recimo, da obstajata dve vrednosti, 10 in 20, ki ju želimo shraniti in uporabiti v našem programu. Za to moramo uporabiti spremenljivko in naredili bomo naslednje korake:

  • Najprej bomo ustvarili ali deklarirali spremenljivko s primernim imenom.
  • Te vrednosti dodelite spremenljivkam, da jih shranite.
  • Ko so te vrednosti shranjene, lahko te spremenljivke uporabimo z njihovim imenom v našem programu.
Lokalna spremenljivka proti globalni spremenljivki

Kot lahko vidimo na zgornji sliki, obstajata dve pomnilniški reži, 001 in 002, in tema lokacijama smo poimenovali kot A in B. A vsebuje 10, B pa 20.

Različni programski jeziki imajo različne načine za deklaracijo spremenljivke. Na primer, v jeziku C lahko spremenljivko deklariramo na naslednji način:

Sintaksa: (Sintaksa deklaracije spremenljivke v jeziku C)

arraylist java
 datatype v1, v2, v3,....; 

primer:

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

Obseg spremenljivke

Vsaka spremenljivka je definirana in se lahko uporablja znotraj svojega obsega ter določa, v katerem programu je ta spremenljivka na voljo za uporabo. Obseg pomeni življenjsko dobo te spremenljivke. To pomeni, da je spremenljivka dostopna ali vidna samo v njenem obsegu.

Obseg spremenljivk je mogoče definirati z njihovo deklaracijo, spremenljivke pa so deklarirane predvsem na dva načina:

    Globalna spremenljivka:Zunaj vseh funkcijLokalna spremenljivka:Znotraj funkcijskega bloka:

Kaj je globalna spremenljivka?

  • Globalne spremenljivke so tiste spremenljivke, ki so deklarirane zunaj vseh funkcij ali blokov in do katerih je mogoče globalno dostopati v programu.
  • Do njega lahko dostopate s katero koli funkcijo, ki je prisotna v programu.
  • Ko enkrat deklariramo globalno spremenljivko, lahko njeno vrednost spreminjamo, kot jo uporabljamo z različnimi funkcijami.
  • Življenjska doba globalne spremenljivke obstaja, dokler se program ne izvede. Te spremenljivke so shranjene na fiksnih pomnilniških lokacijah, ki jih poda prevajalnik, in se ne očistijo samodejno.
  • Globalne spremenljivke se večinoma uporabljajo v programiranju in so uporabne v primerih, ko morajo vse funkcije dostopati do istih podatkov.

primer:

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

V zgornjem primeru sta a in b globalni spremenljivki.

1 od 1000

Prednosti globalne spremenljivke

  • Do globalnih spremenljivk lahko dostopajo vse funkcije, ki so prisotne v programu.
  • Zahtevana je samo ena deklaracija.
  • Zelo uporabno, če vse funkcije dostopajo do istih podatkov.

Slabosti globalne spremenljivke

  • Vrednost globalne spremenljivke se lahko po nesreči spremeni, saj jo lahko uporablja katera koli funkcija v programu.
  • Če uporabljamo veliko število globalnih spremenljivk, obstaja velika verjetnost generiranja napak v programu.

Kaj je lokalna spremenljivka?

    Spremenljivke, ki so deklarirane znotraj ali znotraj funkcijskega bloka, so znane kot lokalne spremenljivke.
  • Do teh spremenljivk je mogoče dostopati samo znotraj funkcije, v kateri so deklarirane.
  • Življenjska doba lokalne spremenljivke je samo znotraj njene funkcije, kar pomeni, da spremenljivka obstaja, dokler se funkcija ne izvrši. Ko je izvajanje funkcije končano, so lokalne spremenljivke uničene in ne obstajajo več zunaj funkcije.
  • Razlog za omejen obseg lokalnih spremenljivk je v tem, da so lokalne spremenljivke shranjene v skladu, ki je po naravi dinamičen in samodejno čisti podatke, shranjene v njem.
  • Če pa spremenljivko naredimo statično s ključno besedo 'static', lahko ohranimo vrednost lokalne spremenljivke.

primer:

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

V zgornjem primeru smo deklarirali x in y dve spremenljivki znotraj glavne funkcije. Zato so to lokalne spremenljivke.

Prednosti lokalne spremenljivke

  • Isto ime lokalne spremenljivke je mogoče uporabiti v različnih funkcijah, saj ga prepozna samo funkcija, v kateri je deklarirano.
  • Lokalne spremenljivke uporabljajo pomnilnik samo za omejen čas, ko se funkcija izvaja; potem se lahko ista pomnilniška lokacija ponovno uporabi.

Slabosti lokalnih spremenljivk

  • Obseg lokalne spremenljivke je omejen samo na njeno funkcijo in je ne morejo uporabljati druge funkcije.
  • Deljenje podatkov z lokalno spremenljivko ni dovoljeno.

Primerjalna tabela med globalno spremenljivko in lokalno spremenljivko

Globalna spremenljivka Lokalna spremenljivka
Globalne spremenljivke so deklarirane zunaj vseh funkcijskih blokov. Lokalne spremenljivke so deklarirane znotraj funkcijskega bloka.
Obseg ostaja ves čas programa. Obseg je omejen in ostaja samo znotraj funkcije, v kateri so deklarirani.
Vsaka sprememba globalne spremenljivke vpliva na celoten program, ne glede na to, kje se uporablja. Kakršna koli sprememba lokalne spremenljivke ne vpliva na druge funkcije programa.
Globalna spremenljivka obstaja v programu ves čas, ko se program izvaja. Lokalna spremenljivka se ustvari, ko se funkcija izvaja, in ko je izvedba končana, se spremenljivka uniči.
Do njega je mogoče dostopati v celotnem programu z vsemi funkcijami, ki so v programu. Do njega je mogoče dostopati le s funkcijskimi stavki, v katerih je deklariran, in ne z drugimi funkcijami.
Če globalna spremenljivka ni inicializirana, ima privzeto vrednost nič. Če lokalna spremenljivka ni inicializirana, privzeto prevzame vrednost smeti.
Globalne spremenljivke so shranjene v podatkovnem segmentu pomnilnika. Lokalne spremenljivke so shranjene v skladu v pomnilniku.
Ne moremo deklarirati veliko spremenljivk z istim imenom. Različne spremenljivke lahko deklariramo z istim imenom, vendar v drugih funkcijah.

Primeri za razumevanje razlik med lokalno in globalno spremenljivko

Zdaj pa poglejmo primere v različnih programskih jezikih, da bomo bolje razumeli razliko med lokalnimi in globalnimi spremenljivkami.

Lokalno proti globalnemu v C

Primer-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); } 

Izhod:

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

Kot lahko vidimo v zgornjem programu, smo sprejeli a in b globalne spremenljivke, do katerih dostopate v različnih funkcijah, kot sta Add() in main(). Obstajajo pa tudi lokalne spremenljivke, kot so c, d, Ans1 in Ans2, do katerih dostopajo samo tiste funkcije, v katerih so deklarirane.

testiranje in vrste testiranja

Če poskušamo uporabiti spremenljivki c in d zunaj funkcije Mul(), bosta uporabljeni kot novi spremenljivki. Kot smo pokazali z uporabo c tudi v funkciji main(), se obravnava kot nova spremenljivka.

Lokalno vs. Globalno v Pythonu

Primer-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 

Izhod:

 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. 

V zgornjem programu smo vzeli eno globalno spremenljivko v1 in eno lokalno spremenljivko v2. Ker je v1 globalen, je do njega mogoče zlahka dostopati v kateri koli funkciji, v2 pa je lokalni; uporablja se samo znotraj deklarirane funkcije. Toda če poskusimo uporabiti v1 v funkciji1, bo to povzročilo napako. Oglejmo si spodnji primer:

Primer-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 

Če poskušamo dostopati do v1, lahko do njega enostavno dostopamo v fun1 in func2. Toda če poskušamo dostopati do v2 zunaj njegove funkcije, kar pomeni v func2, bo povzročilo napako med izvajanjem. Po izvedbi zgornje kode bomo dobili spodnji rezultat:

Napaka med izvajanjem:

 NameError: global name 'v2' is not defined 

Izhod:

 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. 

Lokalno vs. Globalna spremenljivka v Javi

V Javi ni koncepta globalnih spremenljivk; ker je Java objektno usmerjen programski jezik, je vse del razreda. Če pa želimo narediti spremenljivko globalno dostopno, jo lahko naredimo statično z uporabo a statična Ključna beseda.

 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)); } } 

Izhod:

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

V zgornjem programu smo uporabili eno lokalno spremenljivko ali nestatično spremenljivko in eno statično spremenljivko. Do lokalne spremenljivke je mogoče dostopati z uporabo predmeta razreda Demo, medtem ko je do statične spremenljivke mogoče dostopati z imenom razreda.