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

Kluczowe różnice między zmienną lokalną a zmienną globalną

  • Zmienna lokalna jest deklarowana wewnątrz funkcji, podczas gdy zmienna globalna jest deklarowana poza funkcją.
  • Zmienne lokalne są tworzone, gdy funkcja rozpoczyna wykonywanie i są tracone po zakończeniu funkcji, z drugiej strony zmienna globalna jest tworzona w momencie rozpoczęcia wykonywania i tracona po zakończeniu programu.
  • Zmienna lokalna nie zapewnia udostępniania danych, natomiast zmienna globalna zapewnia udostępnianie danych.
  • Zmienne lokalne są przechowywane na stosie, podczas gdy zmienna globalna jest przechowywana w stałym miejscu określonym przez kompilator.
  • Przekazywanie parametrów jest wymagane w przypadku zmiennych lokalnych, podczas gdy w przypadku zmiennej globalnej nie jest to konieczne

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

Co to jest zmienna?

Zmienna to nazwa przypisana do obszaru pamięci, którą program może manipulować. Typ zmiennej określa rozmiar i układ pamięci zmiennej.

Określa również zakres wartości, które muszą być przechowywane w pamięci, a także rodzaj operacji, jakie można zastosować do danej zmiennej.

Zakres zmiennych

Zasięg zmiennej to po prostu czas życia zmiennej. Jest to blok kodu, w ramach którego zmienna ma zastosowanie lub jest aktywna. Na przykład:

function foo(){
var x;
}

Deklarujesz zmienną „x” wewnątrz funkcji „foo”. Zasięg tej zmiennej pozostaje wewnątrz tej funkcji i nie można jej używać poza tą funkcją.
Istnieją trzy miejsca, w których można zadeklarować zmienne w języku programowania:

  • Wewnątrz funkcji lub bloku: Zmienne lokalne
  • Poza wszystkimi funkcjami: Zmienne globalne
  • W definicji parametrów funkcji: Parametry formalne

Zmienna lokalna

Zmienna lokalna jest zdefiniowany jako typ zmiennej zadeklarowanej w bloku programowania lub podprogramach. Może być używany tylko wewnątrz podprogramu lub bloku kodu, w którym został zadeklarowany. Zmienna lokalna istnieje, dopóki blok funkcji nie jest wykonywany. Po tym czasie zostanie automatycznie zniszczona.

Przykład zmiennej lokalnej

public int add(){
int a =4;
int b=5;
return a+b;
}

Tutaj „a” i „b” są zmiennymi lokalnymi

Zmienna globalna

A Zmienna globalna w programie jest zmienną zdefiniowaną poza podprogramem lub funkcją. Ma zasięg globalny, co oznacza, że ​​zachowuje swoją wartość przez cały czas trwania programu. W związku z tym można uzyskać do niego dostęp w całym programie za pomocą dowolnej funkcji zdefiniowanej w programie, chyba że jest ona zacieniona.

Przykład:

int a =4;
int b=5;
public int add(){
return a+b;
}

Tutaj „a” i „b” są zmiennymi globalnymi.

Zmienna lokalna a zmienne globalne

Oto kilka podstawowych różnic między zmiennymi lokalnymi i globalnymi.

Parametr Lokalny Globalny
Zakres Jest zadeklarowana wewnątrz funkcji. Jest zadeklarowana poza funkcją.
Wartość: Jeśli nie zostanie zainicjowany, przechowywana jest wartość śmieci Jeżeli nie zostało zainicjowane, domyślnie zapisywane jest zero.
Życie Jest tworzony, gdy funkcja rozpoczyna wykonywanie i tracona, gdy funkcje się kończą. Jest tworzony przed rozpoczęciem globalnego wykonywania programu i tracony po zakończeniu programu.
Udostępnianie danych Udostępnianie danych nie jest możliwe, ponieważ dostęp do danych zmiennej lokalnej może uzyskać tylko jedna funkcja. Udostępnianie danych jest możliwe, ponieważ wiele funkcji może uzyskać dostęp do tej samej zmiennej globalnej.
Parametry Aby zmienne lokalne mogły uzyskać dostęp do wartości w innej funkcji, wymagane jest przekazywanie parametrów Przekazywanie parametrów nie jest konieczne w przypadku zmiennej globalnej, ponieważ jest ona widoczna w całym programie
Modyfikacja wartości zmiennej Gdy wartość zmiennej lokalnej zostanie zmodyfikowana w jednej funkcji, zmiany nie będą widoczne w innej funkcji. Gdy wartość zmiennej globalnej zostanie zmodyfikowana w jednej funkcji, zmiany będą widoczne w pozostałej części programu.
Dostęp przez Dostęp do zmiennych lokalnych można uzyskać za pomocą instrukcji wewnątrz funkcji, w której są zadeklarowane. Dostęp do zmiennych globalnych można uzyskać za pomocą dowolnej instrukcji w programie.
Magazyn pamięci Jest przechowywany na stosie, chyba że określono inaczej. Jest przechowywany w stałej lokalizacji określonej przez kompilator.

Zalety stosowania zmiennych globalnych

  • Dostęp do zmiennej globalnej można uzyskać ze wszystkich funkcji lub modułów programu
  • Wystarczy jednorazowo zadeklarować zmienną globalną poza modułami.
  • Idealnie nadaje się do przechowywania „stałych”, ponieważ pomaga zachować spójność.
  • Zmienna globalna jest przydatna, gdy wiele funkcji uzyskuje dostęp do tych samych danych.

Zalety stosowania zmiennych lokalnych

  • Użycie zmiennych lokalnych gwarantuje, że wartości zmiennych pozostaną niezmienione podczas wykonywania zadania
  • Jeśli kilka zadań zmienia pojedynczą zmienną, która działa jednocześnie, wynik może być nieprzewidywalny. Jednak zadeklarowanie jej jako zmiennej lokalnej rozwiązuje ten problem, ponieważ każde zadanie utworzy własną instancję zmiennej lokalnej.
  • Zmiennym lokalnym można nadać tę samą nazwę w różnych funkcjach, ponieważ są one rozpoznawane tylko przez funkcję, w której są zadeklarowane.
  • Zmienne lokalne są usuwane po zakończeniu dowolnej funkcji i zwalniają zajmowaną przez nią przestrzeń pamięci.

Wady stosowania zmiennych globalnych

  • Zbyt dużo zmiennych zadeklarowanych jako globalne, wówczas pozostają one w pamięci do czasu zakończenia wykonywania programu. Może to być przyczyną problemu braku pamięci.
  • Dane można modyfikować dowolną funkcją. Dowolna instrukcja zapisana w programie może zmienić wartość zmiennej globalnej. Może to dawać nieprzewidywalne rezultaty w środowiskach wielozadaniowych.
  • Jeśli zmienne globalne zostaną wycofane z powodu refaktoryzacji kodu, będziesz musiał zmienić wszystkie moduły, w których są wywoływane.

Wady stosowania zmiennych lokalnych

  • Proces debugowania zmiennej lokalnej jest dość skomplikowany.
  • Wspólne dane muszą być przesyłane wielokrotnie, ponieważ wymiana danych między modułami nie jest możliwa.
  • Mają bardzo ograniczony zakres.

Co jest bardziej przydatne?

Zmienna lokalna i globalna równie ważna przy pisaniu programu w dowolnym języku. Jednakże duża liczba zmiennych globalnych może zajmować ogromną pamięć. Niepożądana zmiana zmiennych globalnych staje się trudna do zidentyfikowania. Dlatego wskazane jest unikanie deklarowania niepożądanych zmiennych globalnych.