logo

Różnica między zmienną lokalną a zmienną globalną

Zmienne w każdym języku programowania odgrywają kluczową rolę. Zmienne są klasyfikowane na zmienne globalne i zmienne lokalne na podstawie ich zakresu. Główna różnica między zmiennymi globalnymi i lokalnymi polega na tym, że dostęp do zmiennych globalnych można uzyskać globalnie w całym programie, podczas gdy dostęp do zmiennych lokalnych można uzyskać tylko w obrębie funkcji lub bloku, w którym są zdefiniowane. W tym temacie najpierw zrozumiemy, czym są zmienne i zakres, wraz ze zmiennymi lokalnymi, zmiennymi globalnymi, a następnie różnicami między obiema zmiennymi.

Zmienna lokalna a zmienna globalna

Co to jest zmienna?

Zmienna to nazwa nadana komórce pamięci służącej do przechowywania wartości w programie komputerowym. Służy do przechowywania informacji, do których można się odwoływać i którymi można manipulować w programie.

Możemy wybrać dowolną nazwę zmiennej, ale musi ona być zgodna z semantyką programowania. Takie, jakie może być , a, b, x, y, z, sub, div, total, avg itp .

Załóżmy, że istnieją dwie wartości, 10 i 20, które chcemy przechowywać i używać w naszym programie. W tym celu musimy użyć zmiennej i wykonamy poniższe kroki:

  • Najpierw utworzymy lub zadeklarujemy zmienną o odpowiedniej nazwie.
  • Przypisz te wartości do zmiennych, aby je przechowywać.
  • Gdy te wartości zostaną zapisane, możemy użyć tych zmiennych z ich nazwami w naszym programie.
Zmienna lokalna a zmienna globalna

Jak widać na powyższym obrazku, istnieją dwa gniazda pamięci, 001 i 002, którym nadaliśmy nazwy A i B. A zawiera 10, a B zawiera 20.

sortowanie bąbelkowe

Różne języki programowania mają różne sposoby deklarowania zmiennej. Przykładowo w języku C możemy zadeklarować zmienną w następujący sposób:

Składnia: (Składnia deklaracji zmiennej w języku C)

rekha indyjski
 datatype v1, v2, v3,....; 

Przykład:

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

Zakres zmiennej

Każda zmienna jest zdefiniowana i może być używana w swoim zakresie oraz określa, w którym programie dana zmienna jest dostępna do użycia. Zakres oznacza czas życia tej zmiennej. Oznacza to, że zmienna może być dostępna lub widoczna tylko w jej zakresie.

Zakres zmiennych można zdefiniować poprzez ich deklarację, a zmienne deklaruje się głównie na dwa sposoby:

    Zmienna globalna:Poza wszystkimi funkcjamiZmienna lokalna:W bloku funkcyjnym:

Co to jest zmienna globalna?

  • Zmienne globalne to te zmienne, które są zadeklarowane poza wszystkimi funkcjami lub blokami i można uzyskać do nich globalny dostęp w programie.
  • Dostęp do niego można uzyskać za pomocą dowolnej funkcji występującej w programie.
  • Po zadeklarowaniu zmiennej globalnej jej wartość można zmieniać w zależności od zastosowania w różnych funkcjach.
  • Czas życia zmiennej globalnej istnieje do momentu wykonania programu. Zmienne te są przechowywane w stałych lokalizacjach pamięci podanych przez kompilator i nie są automatycznie czyszczone.
  • Zmienne globalne są najczęściej używane w programowaniu i przydatne w przypadkach, gdy wszystkie funkcje muszą mieć dostęp do tych samych danych.

Przykład:

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

W powyższym przykładzie aib są zmiennymi globalnymi.

Zalety zmiennej globalnej

  • Dostęp do zmiennych globalnych można uzyskać za pomocą wszystkich funkcji występujących w programie.
  • Wymagane jest tylko jedno oświadczenie.
  • Bardzo przydatne, jeśli wszystkie funkcje uzyskują dostęp do tych samych danych.

Wady zmiennej globalnej

  • Wartość zmiennej globalnej może zostać przypadkowo zmieniona, ponieważ może zostać użyta przez dowolną funkcję w programie.
  • Jeśli użyjemy dużej liczby zmiennych globalnych, wówczas istnieje duże prawdopodobieństwo wygenerowania błędu w programie.

Co to jest zmienna lokalna?

    Zmienne zadeklarowane w bloku funkcyjnym lub wewnątrz niego nazywane są zmiennymi lokalnymi.
  • Dostęp do tych zmiennych można uzyskać wyłącznie w ramach funkcji, w której zostały zadeklarowane.
  • Czas życia zmiennej lokalnej mieści się wyłącznie w jej funkcji, co oznacza, że ​​zmienna istnieje do momentu wykonania funkcji. Po zakończeniu wykonywania funkcji zmienne lokalne są niszczone i nie istnieją już poza funkcją.
  • Powodem ograniczonego zakresu zmiennych lokalnych jest to, że zmienne lokalne są przechowywane na stosie, który ma charakter dynamiczny i automatycznie czyści przechowywane na nim dane.
  • Ale ustawiając zmienną statyczną za pomocą słowa kluczowego „static”, możemy zachować wartość zmiennej lokalnej.

Przykład:

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

W powyższym przykładzie zadeklarowaliśmy x i y dwie zmienne wewnątrz funkcji głównej. Są to zatem zmienne lokalne.

Zalety zmiennej lokalnej

  • Ta sama nazwa zmiennej lokalnej może być używana w różnych funkcjach, ponieważ jest rozpoznawana tylko przez funkcję, w której jest zadeklarowana.
  • Zmienne lokalne wykorzystują pamięć tylko przez ograniczony czas, gdy funkcja jest wykonywana; po czym można ponownie wykorzystać tę samą lokalizację pamięci.

Wady zmiennych lokalnych

  • Zasięg zmiennej lokalnej jest ograniczony tylko do jej funkcji i nie może być używany przez inne funkcje.
  • Udostępnianie danych przez zmienną lokalną jest niedozwolone.

Tabela porównawcza między zmienną globalną a zmienną lokalną

Zmienna globalna Zmienna lokalna
Zmienne globalne deklarowane są poza wszystkimi blokami funkcyjnymi. Zmienne lokalne deklarowane są w bloku funkcyjnym.
Zakres pozostaje taki sam przez cały program. Zakres jest ograniczony i mieści się wyłącznie w ramach funkcji, w której są zadeklarowane.
Jakakolwiek zmiana zmiennej globalnej ma wpływ na cały program, gdziekolwiek jest ona używana. Jakakolwiek zmiana zmiennej lokalnej nie ma wpływu na inne funkcje programu.
Zmienna globalna istnieje w programie przez cały czas wykonywania programu. Zmienna lokalna jest tworzona podczas wykonywania funkcji, a po zakończeniu wykonywania zmienna jest niszczona.
Dostęp do niego można uzyskać w całym programie za pomocą wszystkich funkcji dostępnych w programie. Dostęp do niego można uzyskać jedynie poprzez instrukcje funkcyjne, w których jest zadeklarowany, a nie przez inne funkcje.
Jeśli zmienna globalna nie została zainicjowana, domyślnie przyjmuje zero. Jeśli zmienna lokalna nie została zainicjowana, domyślnie przyjmuje wartość śmieciową.
Zmienne globalne są przechowywane w segmencie danych pamięci. Zmienne lokalne są przechowywane na stosie w pamięci.
Nie możemy zadeklarować wielu zmiennych o tej samej nazwie. Możemy deklarować różne zmienne o tej samej nazwie, ale w innych funkcjach.

Przykłady pozwalające zrozumieć różnice między zmienną lokalną i globalną

Teraz zrozumiemy przykłady w różnych językach programowania, aby lepiej zrozumieć różnicę między zmiennymi lokalnymi i globalnymi.

dla każdego maszynopisu

Lokalne a globalne w C

Przykład 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); } 

Wyjście:

jakie miesiące są w 3 kw
 The addition result is: 120 The Multiplication result is: 200 30 

Jak widać w powyższym programie, wzięliśmy A I B zmienne globalne, do których uzyskuje się dostęp w różnych funkcjach, takich jak Add() i main(). Istnieją również zmienne lokalne, takie jak c, d, Ans1 i Ans2, do których dostęp mają tylko te funkcje, w których są zadeklarowane.

Jeśli spróbujemy użyć zmiennych c i d poza funkcją Mul(), zostaną one użyte jako nowe zmienne. Jak pokazaliśmy, biorąc c również do funkcji main(), jest ono traktowane jako nowa zmienna.

Lokalne vs. Globalny w Pythonie

Przykład 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 

Wyjście:

 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. 

W powyższym programie wzięliśmy jedną zmienną globalną v1 i jedną zmienną lokalną v2. Ponieważ wersja v1 jest globalna, można do niej łatwo uzyskać dostęp w dowolnej funkcji, a wersja v2 jest lokalna; jest używany tylko w ramach zadeklarowanej funkcji. Ale jeśli spróbujemy użyć v1 w func1, wyświetli się błąd. Zobaczmy poniższy przykład:

Przykład-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 

Jeśli spróbujemy uzyskać dostęp do v1, będzie można łatwo uzyskać do niego dostęp w fun1 i func2. Ale jeśli spróbujemy uzyskać dostęp do v2 poza jego funkcją, co oznacza w func2, zwróci to błąd wykonania. Po wykonaniu powyższego kodu otrzymamy poniższe dane wyjściowe:

Błąd wykonania:

polecenia systemu Linux które
 NameError: global name 'v2' is not defined 

Wyjście:

 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. 

Lokalne vs. Zmienna globalna w Javie

W Javie nie ma pojęcia zmiennych globalnych; ponieważ Java jest językiem programowania zorientowanym obiektowo, wszystko jest częścią klasy. Ale jeśli chcemy, aby zmienna była dostępna globalnie, możemy uczynić ją statyczną, używając a statyczny Słowo kluczowe.

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

Wyjście:

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

W powyższym programie użyliśmy jednej zmiennej lokalnej lub zmiennej niestatycznej i jednej zmiennej statycznej. Dostęp do zmiennej lokalnej można uzyskać poprzez obiekt klasy Demo, natomiast dostęp do zmiennej statycznej można uzyskać poprzez nazwę klasy.