logo

Atšķirība starp lokālo mainīgo un globālo mainīgo

Mainīgajiem jebkurā programmēšanas valodā ir izšķiroša nozīme. Mainīgie tiek klasificēti globālajos mainīgajos un lokālajos mainīgajos, pamatojoties uz to darbības jomu. Galvenā atšķirība starp globālajiem un lokālajiem mainīgajiem ir tā, ka globālajiem mainīgajiem var piekļūt globāli visā programmā, savukārt vietējiem mainīgajiem var piekļūt tikai tajā funkcijā vai blokā, kurā tie ir definēti. Šajā tēmā mēs vispirms sapratīsim, kas ir mainīgie un darbības joma, kā arī vietējie mainīgie, globālie mainīgie un pēc tam atšķirības starp abiem mainīgajiem.

Vietējais mainīgais salīdzinājumā ar globālo mainīgo

Kas ir mainīgais?

Mainīgais ir nosaukums, kas piešķirts atmiņas vietai, lai saglabātu vērtības datorprogrammā. To izmanto, lai saglabātu informāciju, uz kuru var atsaukties un ar ko var manipulēt programmā.

Mēs varam izvēlēties jebkuru mainīgā nosaukumu, taču tam ir jāievēro programmēšanas semantika. Tāds, kāds tas var būt , a, b, x, y, z, sub, div, kopējais, vid. utt .

Pieņemsim, ka ir divas vērtības, 10 un 20, kuras mēs vēlamies saglabāt un izmantot savā programmā. Šim nolūkam mums ir jāizmanto mainīgais, un mēs veiksim tālāk norādītās darbības.

  • Pirmkārt, mēs izveidosim vai deklarēsim mainīgo ar piemērotu nosaukumu.
  • Piešķiriet šīs vērtības mainīgajiem, lai tās saglabātu.
  • Kad šīs vērtības ir saglabātas, mēs varam izmantot šos mainīgos ar to nosaukumu mūsu programmā.
Vietējais mainīgais salīdzinājumā ar globālo mainīgo

Kā redzams iepriekš redzamajā attēlā, ir divi atmiņas sloti — 001 un 002, un mēs šīm vietām esam nosaukuši A un B. A satur 10, bet B satur 20.

java apakšvirknes metode

Dažādām programmēšanas valodām ir dažādi veidi, kā deklarēt mainīgo. Piemēram, C valodā mainīgo varam deklarēt šādā veidā:

Sintakse: (mainīgā deklarācijas sintakse C valodā)

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

Piemērs:

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

Mainīgā darbības joma

Katrs mainīgais ir definēts un var tikt izmantots tā darbības jomā, un tas nosaka, vai programmā šis mainīgais ir pieejams lietošanai. Tvērums nozīmē šī mainīgā lieluma kalpošanas laiku. Tas nozīmē, ka mainīgajam var piekļūt vai tas ir redzams tikai tā darbības jomā.

Mainīgo lielumu apjomu var definēt ar to deklarāciju, un mainīgie tiek deklarēti galvenokārt divos veidos:

    Globālais mainīgais:Ārpus visām funkcijāmVietējais mainīgais:Funkciju blokā:

Kas ir globālais mainīgais?

  • Globālie mainīgie ir tie mainīgie, kas ir deklarēti ārpus visām funkcijām vai blokiem un kuriem programmā var piekļūt globāli.
  • Tam var piekļūt, izmantojot jebkuru programmā esošo funkciju.
  • Kad esam deklarējuši globālo mainīgo, tā vērtību var mainīt, izmantojot dažādas funkcijas.
  • Globālā mainīgā kalpošanas laiks pastāv līdz programmas izpildei. Šie mainīgie tiek glabāti fiksētās atmiņas vietās, ko norādījis kompilators, un tie netiek automātiski notīrīti.
  • Globālos mainīgos lielākoties izmanto programmēšanā un noder gadījumos, kad visām funkcijām ir jāpiekļūst vieniem un tiem pašiem datiem.

Piemērs:

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

Iepriekš minētajā piemērā a un b ir globālie mainīgie.

kat timpf augums

Globālā mainīgā priekšrocības

  • Globālajiem mainīgajiem var piekļūt ar visām programmā esošajām funkcijām.
  • Nepieciešama tikai viena deklarācija.
  • Ļoti noderīgi, ja visas funkcijas piekļūst vieniem un tiem pašiem datiem.

Globālā mainīgā trūkumi

  • Globālā mainīgā vērtību var nejauši mainīt, jo to var izmantot jebkura programmas funkcija.
  • Ja mēs izmantojam lielu skaitu globālo mainīgo, tad programmā ir liela kļūdu ģenerēšanas iespēja.

Kas ir lokālais mainīgais?

    Mainīgos, kas ir deklarēti funkciju blokā vai tā iekšpusē, sauc par vietējiem mainīgajiem.
  • Šiem mainīgajiem var piekļūt tikai tajā funkcijā, kurā tie ir deklarēti.
  • Vietējā mainīgā kalpošanas laiks ir tikai tā funkcijā, kas nozīmē, ka mainīgais pastāv līdz funkcijas izpildei. Kad funkcijas izpilde ir pabeigta, lokālie mainīgie tiek iznīcināti un ārpus funkcijas vairs nepastāv.
  • Vietējo mainīgo ierobežotā apjoma iemesls ir tas, ka lokālie mainīgie tiek glabāti kaudzē, kas pēc būtības ir dinamisks un automātiski attīra tajā saglabātos datus.
  • Bet, padarot mainīgo statisku ar atslēgvārdu “static”, mēs varam saglabāt vietējā mainīgā vērtību.

Piemērs:

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

Iepriekš minētajā piemērā galvenās funkcijas ietvaros esam deklarējuši divus mainīgos lielumus x un y. Tādējādi tie ir vietējie mainīgie.

Vietējā mainīgā priekšrocības

  • Vienu un to pašu lokālā mainīgā nosaukumu var izmantot dažādās funkcijās, jo to atpazīst tikai funkcija, kurā tas ir deklarēts.
  • Vietējie mainīgie izmanto atmiņu tikai ierobežotu laiku, kad funkcija tiek izpildīta; pēc tam to pašu atmiņas vietu var izmantot atkārtoti.

Vietējo mainīgo trūkumi

  • Vietējā mainīgā darbības joma ir ierobežota tikai ar tā funkciju, un to nevar izmantot citas funkcijas.
  • Datu koplietošana ar vietējo mainīgo nav atļauta.

Globālā mainīgā un vietējā mainīgā salīdzināšanas diagramma

Globālais mainīgais Vietējais mainīgais
Globālie mainīgie tiek deklarēti ārpus visiem funkciju blokiem. Vietējie mainīgie tiek deklarēti funkciju blokā.
Darbības joma saglabājas visas programmas laikā. Darbības joma ir ierobežota un paliek tikai tajā funkcijā, kurā tie ir deklarēti.
Jebkuras izmaiņas globālajā mainīgajā ietekmē visu programmu neatkarīgi no tā, kur tā tiek izmantota. Jebkuras izmaiņas lokālajā mainīgajā neietekmē citas programmas funkcijas.
Globālais mainīgais programmā pastāv visu programmas izpildes laiku. Vietējais mainīgais tiek izveidots, kad funkcija tiek izpildīta, un, kad izpilde ir pabeigta, mainīgais tiek iznīcināts.
Tai var piekļūt visā programmā, izmantojot visas programmas funkcijas. Tam var piekļūt tikai ar funkciju priekšrakstiem, kuros tas ir deklarēts, nevis ar citām funkcijām.
Ja globālais mainīgais nav inicializēts, pēc noklusējuma tas aizņem nulle. Ja vietējais mainīgais nav inicializēts, tas pēc noklusējuma izmanto atkritumu vērtību.
Globālie mainīgie tiek glabāti atmiņas datu segmentā. Vietējie mainīgie tiek saglabāti kaudzē atmiņā.
Mēs nevaram deklarēt daudzus mainīgos ar vienādu nosaukumu. Mēs varam deklarēt dažādus mainīgos ar tādu pašu nosaukumu, bet citās funkcijās.

Piemēri, lai izprastu atšķirības starp lokālo un globālo mainīgo

Tagad sapratīsim piemērus dažādās programmēšanas valodās, lai labāk izprastu atšķirību starp vietējiem un globālajiem mainīgajiem.

Vietējais pret globālo C

1. piemērs:

pothineni auns
 #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); } 

Izvade:

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

Kā mēs redzam iepriekš minētajā programmā, mēs esam paņēmuši a un b globālie mainīgie, kuriem tiek piekļūts dažādās funkcijās, piemēram, Add() un main(). Tā kā ir arī vietējie mainīgie, piemēram, c, d, Ans1 un Ans2, kuriem piekļūst tikai tās funkcijas, kurās tie ir deklarēti.

Ja mēs mēģināsim izmantot c un d mainīgos ārpus funkcijas Mul (), tie tiks izmantoti kā jauni mainīgie. Kā mēs esam parādījuši, uzņemot c arī funkcijā main (), tas tiek uzskatīts par jaunu mainīgo.

Vietējais vs. Globālais Python

1. piemērs:

 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 

Izvade:

 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. 

Iepriekš minētajā programmā mēs esam izmantojuši vienu globālo mainīgo v1 un vienu lokālo mainīgo v2. Tā kā v1 ir globāls, tai var viegli piekļūt jebkurā funkcijā, un v2 ir lokāls; to izmanto tikai tās deklarētās funkcijas ietvaros. Bet, ja mēs mēģināsim izmantot v1 func1, tas radīs kļūdu. Apskatīsim tālāk redzamo piemēru:

mysql izveidot lietotāju

Piemērs-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 

Ja mēģinām piekļūt v1, tai var viegli piekļūt fun1 un func2. Bet, ja mēs mēģināsim piekļūt v2 ārpus tās funkcijas, kas nozīmē func2, tas radīs izpildlaika kļūdu. Pēc iepriekš minētā koda izpildes mēs saņemsim tālāk norādīto izvadi:

Izpildlaika kļūda:

 NameError: global name 'v2' is not defined 

Izvade:

 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. 

Vietējais vs. Globālais mainīgais Java

Java nav globālo mainīgo jēdziena; Tā kā Java ir uz objektu orientēta programmēšanas valoda, viss ir klases daļa. Bet, ja mēs vēlamies padarīt mainīgo globāli pieejamu, mēs varam padarīt to statisku, izmantojot a statisks Atslēgvārds.

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

Izvade:

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

Iepriekš minētajā programmā mēs esam izmantojuši vienu lokālo mainīgo vai nestatisko mainīgo un vienu statisko mainīgo. Vietējam mainīgajam var piekļūt, izmantojot Demo klases objektu, savukārt statiskajam mainīgajam var piekļūt, izmantojot klases nosaukumu.