logo

Rozdíl mezi lokální proměnnou a globální proměnnou

Proměnné v jakémkoli programovacím jazyce hrají zásadní roli. Proměnné jsou klasifikovány na globální proměnné a lokální proměnné na základě jejich rozsahu. Hlavní rozdíl mezi globálními a lokálními proměnnými je ten, že ke globálním proměnným lze přistupovat globálně v celém programu, zatímco k lokálním proměnným lze přistupovat pouze v rámci funkce nebo bloku, ve kterém jsou definovány. V tomto tématu nejprve pochopíme, co jsou proměnné a rozsah, spolu s lokálními proměnnými, globálními proměnnými a poté rozdíly mezi oběma proměnnými.

Lokální proměnná vs globální proměnná

Co je proměnná?

Proměnná je název daný paměťovému místu pro uložení hodnot v počítačovém programu. Používá se k ukládání informací, na které lze v programu odkazovat a s nimiž lze manipulovat.

celé číslo na řetězec java

Název proměnné můžeme zvolit libovolný, ale musí se řídit sémantikou programování. Taková, jaká může být , a, b, x, y, z, sub, div, total, avg atd .

Řekněme, že existují dvě hodnoty, 10 a 20, které chceme uložit a použít v našem programu. K tomu potřebujeme použít proměnnou a provedeme následující kroky:

  • Nejprve vytvoříme nebo deklarujeme proměnnou s vhodným názvem.
  • Přiřaďte tyto hodnoty proměnným a uložte je.
  • Jakmile jsou tyto hodnoty uloženy, můžeme tyto proměnné použít s jejich názvem v našem programu.
Lokální proměnná vs globální proměnná

Jak můžeme vidět na obrázku výše, jsou zde dva paměťové sloty, 001 a 002, a tato místa jsme pojmenovali jako A a B. A obsahuje 10 a B obsahuje 20.

Různé programovací jazyky mají různé způsoby, jak deklarovat proměnnou. Například v jazyce C můžeme proměnnou deklarovat následujícím způsobem:

Syntaxe: (syntaxe deklarace proměnné v jazyce C)

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

Příklad:

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

Rozsah proměnné

Každá proměnná je definována a může být použita v rámci jejího rozsahu a určuje, v jakém programu je tato proměnná dostupná k použití. Rozsah znamená životnost dané proměnné. To znamená, že proměnná může být přístupná nebo viditelná pouze v rámci jejího rozsahu.

Rozsah proměnných lze definovat jejich deklarací a proměnné jsou deklarovány především dvěma způsoby:

římská čísla 1 až 100
    Globální proměnná:Mimo všechny funkceMístní proměnná:V rámci funkčního bloku:

Co je globální proměnná?

  • Globální proměnné jsou ty proměnné, které jsou deklarovány mimo všechny funkce nebo blok a lze k nim v programu přistupovat globálně.
  • Lze k němu přistupovat jakoukoli funkcí v programu.
  • Jakmile deklarujeme globální proměnnou, lze její hodnotu měnit tak, jak se používá s různými funkcemi.
  • Životnost globální proměnné existuje, dokud se program nespustí. Tyto proměnné jsou uloženy na pevných paměťových místech zadaných kompilátorem a automaticky se nečistí.
  • Globální proměnné se většinou používají v programování a jsou užitečné v případech, kdy všechny funkce potřebují přístup ke stejným datům.

Příklad:

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

Ve výše uvedeném příkladu jsou aab globální proměnné.

Výhody globální proměnné

  • Globální proměnné jsou přístupné všemi funkcemi přítomnými v programu.
  • Vyžaduje se pouze jedno prohlášení.
  • Velmi užitečné, pokud všechny funkce přistupují ke stejným datům.

Nevýhody globální proměnné

  • Hodnota globální proměnné může být náhodně změněna, protože ji může použít jakákoli funkce v programu.
  • Pokud použijeme velké množství globálních proměnných, pak je velká šance na generování chyb v programu.

Co je to místní proměnná?

    Proměnné, které jsou deklarovány uvnitř nebo uvnitř funkčního bloku, jsou známé jako lokální proměnné.
  • K těmto proměnným lze přistupovat pouze v rámci funkce, ve které jsou deklarovány.
  • Životnost lokální proměnné je pouze v rámci její funkce, což znamená, že proměnná existuje, dokud se funkce nespustí. Po dokončení provádění funkce jsou místní proměnné zničeny a mimo funkci již neexistují.
  • Důvodem omezeného rozsahu lokálních proměnných je to, že lokální proměnné jsou uloženy v zásobníku, který má dynamický charakter a automaticky čistí data v něm uložená.
  • Ale tím, že proměnnou učiníme statickou s klíčovým slovem 'static', můžeme zachovat hodnotu lokální proměnné.

Příklad:

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

Ve výše uvedeném příkladu jsme deklarovali x a y dvě proměnné uvnitř hlavní funkce. Jedná se tedy o lokální proměnné.

Výhody lokální proměnné

  • Stejný název lokální proměnné lze použít v různých funkcích, protože je rozpoznán pouze funkcí, ve které je deklarován.
  • Lokální proměnné využívají paměť pouze po omezenou dobu, kdy je funkce vykonávána; poté může být stejné místo v paměti znovu použito.

Nevýhody lokálních proměnných

  • Rozsah lokální proměnné je omezen pouze na její funkci a nemohou být použity jinými funkcemi.
  • Sdílení dat pomocí lokální proměnné není povoleno.

Srovnávací graf mezi globální proměnnou a lokální proměnnou

Globální proměnná Místní proměnná
Globální proměnné jsou deklarovány mimo všechny funkční bloky. Lokální proměnné jsou deklarovány v rámci funkčního bloku.
Rozsah zůstává po celou dobu programu. Rozsah je omezený a zůstává pouze ve funkci, ve které jsou deklarovány.
Jakákoli změna globální proměnné ovlivní celý program, ať je používán kdekoli. Jakákoli změna v lokální proměnné nemá vliv na ostatní funkce programu.
Globální proměnná existuje v programu po celou dobu provádění programu. Lokální proměnná je vytvořena, když je funkce spuštěna, a jakmile je provádění dokončeno, proměnná je zničena.
Je přístupný v rámci programu všemi funkcemi přítomnými v programu. Lze k němu přistupovat pouze příkazy funkcí, ve kterých je deklarován, a nikoli jinými funkcemi.
Pokud globální proměnná není inicializována, ve výchozím nastavení trvá nulu. Pokud místní proměnná není inicializována, převezme ve výchozím nastavení hodnotu nesmyslu.
Globální proměnné jsou uloženy v datovém segmentu paměti. Lokální proměnné jsou uloženy v zásobníku v paměti.
Nemůžeme deklarovat mnoho proměnných se stejným názvem. Můžeme deklarovat různé proměnné se stejným názvem, ale v jiných funkcích.

Příklady k pochopení rozdílů mezi lokální a globální proměnnou

Pojďme nyní porozumět příkladům v různých programovacích jazycích, abychom lépe porozuměli rozdílu mezi lokálními a globálními proměnnými.

Místní versus globální v C

Příklad-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); } 

Výstup:

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

Jak můžeme vidět ve výše uvedeném programu, vzali jsme A a b globální proměnné, ke kterým se přistupuje v různých funkcích, jako je Add() a main(). Zatímco existují také lokální proměnné jako c, d, Ans1 a Ans2, ke kterým přistupují pouze ty funkce, ve kterých jsou deklarovány.

Pokud se pokusíme použít proměnné c a d mimo funkci Mul(), budou použity jako nové proměnné. Jak jsme ukázali tím, že ve funkci main() také vezmeme c, je s ní zacházeno jako s novou proměnnou.

Místní vs. Globální v Pythonu

Příklad-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 

Výstup:

 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. 

Ve výše uvedeném programu jsme vzali jednu globální proměnnou v1 a jednu lokální proměnnou v2. Protože v1 je globální, lze k němu snadno přistupovat v jakékoli funkci a v2 je lokální; používá se pouze v rámci své deklarované funkce. Ale pokud se pokusíme použít v1 ve funkci func1, zobrazí to chybu. Podívejme se na níže uvedený příklad:

Příklad-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 

Pokud se pokusíme získat přístup k verzi 1, lze ji snadno získat v fun1 a func2. Ale pokud se pokusíme o přístup k v2 mimo její funkci, což znamená ve funkci 2, vyhlásí to chybu běhu. Po provedení výše uvedeného kódu získáme níže uvedený výstup:

cast sql

Chyba za běhu:

 NameError: global name 'v2' is not defined 

Výstup:

 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. 

Místní vs. Globální proměnná v Javě

V Javě neexistuje koncept globálních proměnných; protože Java je objektově orientovaný programovací jazyk, vše je součástí třídy. Pokud však chceme proměnnou zpřístupnit globálně, můžeme ji učinit statickou pomocí a statický Klíčové slovo.

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

Výstup:

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

Ve výše uvedeném programu jsme použili jednu lokální proměnnou nebo nestatickou proměnnou a jednu statickou proměnnou. K místní proměnné lze přistupovat pomocí objektu třídy Demo, zatímco ke statické proměnné lze přistupovat pomocí názvu třídy.