Zalecane, 2019

Wybór Redakcji

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

Jak omówiliśmy wcześniej, zmienna jest nazwą nadawaną lokalizacji pamięci i musi zostać zadeklarowana przed jej użyciem. W C wszystkie zmienne są zadeklarowane na początku programu. W C ++ zmienne mogą być zadeklarowane w dowolnym momencie, zanim zostaną użyte w instrukcjach.

Zmienne są dalej klasyfikowane jako zmienna "lokalna" i "globalna", która jest głównym tematem naszej dyskusji. Tutaj główna różnica między zmienną lokalną i globalną polega na tym, że zmienna lokalna jest zadeklarowana w bloku funkcyjnym, gdzie jako zmienna globalna zadeklarowana jest poza funkcjami programu.

Przyjrzyjmy się nieco większym różnicom pomiędzy zmienną lokalną i globalną oraz tabelą porównawczą.

Wykres porównania:

Podstawa do porównaniaZmienna lokalnaGlobalna zmienna
DeklaracjaZmienne są deklarowane wewnątrz funkcji.Zmienne są zadeklarowane poza jakąkolwiek funkcją.
ZakresW ramach funkcji, w której są zadeklarowane.Przez cały czas trwania programu.
DostępDostęp tylko do instrukcji, wewnątrz funkcji, w której są zadeklarowane.Dostęp do dowolnej instrukcji w całym programie.
ŻycieTworzone, gdy blok funkcyjny jest wprowadzany i niszczony przy wyjściu.Pozostań w grze przez cały czas wykonywania programu.
PrzechowywanieZmienne lokalne są przechowywane na stosie, chyba że określono inaczej.Przechowywany w ustalonej lokalizacji, określony przez kompilator.

Definicja zmiennej lokalnej

Zmienna lokalna jest zawsze deklarowana w bloku funkcyjnym. W C, zmienna lokalna jest zadeklarowana na początku bloku kodu. W C ++ można je zadeklarować w dowolnym miejscu w bloku kodu przed ich użyciem. Do zmiennych lokalnych można uzyskać dostęp tylko za pomocą instrukcji napisanych wewnątrz funkcji, w której deklarowana jest zmienna lokalna. Są bezpieczne w tym sensie, że nie mogą uzyskać dostępu do żadnej innej funkcji tego samego programu.

Zmienna lokalna istnieje dopóki blok funkcji nie zostanie wykonany, a przez to zniszczony po zakończeniu wykonywania bloku. Zmienne lokalne tracą swoją zawartość, gdy tylko wykonanie opuści blok, w którym są zadeklarowane.

Powodem jest to, że zmienne lokalne są przechowywane na stosie, o ile nie określono ich specjalnej pamięci. Stos ma charakter dynamiczny, a zmiana miejsca w pamięci prowadzi do tego, że zmienna lokalna nie zachowuje swojej wartości, gdy tylko blok funkcji istnieje.

Uwaga:
Istnieje jednak sposób na zachowanie wartości zmiennej lokalnej za pomocą modyfikatora "statycznego".

Definicja globalnej zmiennej

Zmienna globalna jest zadeklarowana poza wszystkimi funkcjami obecnymi w programie. W przeciwieństwie do zmiennych lokalnych, do zmiennej globalnej można uzyskać dostęp za pomocą dowolnej funkcji znajdującej się w programie. Zmienne globalne nie są zbyt wiarygodne, ponieważ ich wartość można zmienić za pomocą dowolnej funkcji obecnej w programie.

Zmienne globalne istnieją do momentu całkowitego wykonania całego programu. Zmienne globalne zachowują swoje wartości do momentu wykonania programu. Powodem jest to, że są one przechowywane w ustalonym regionie pamięci, o czym decyduje kompilator.

Zmienna globalna jest pomocna w sytuacjach, w których wiele funkcji uzyskuje dostęp do tych samych danych. Używanie dużej liczby zmiennych globalnych może być problematyczne, ponieważ mogą wystąpić niepożądane zmiany wartości zmiennej globalnej.

Kluczowa różnica pomiędzy zmienną lokalną a globalną.

  1. Zmienne lokalne są nazywane "lokalnymi", ponieważ są znane tylko w instrukcjach napisanych w funkcji, w której są zadeklarowane i nie są znane żadnej innej funkcji znajdującej się poza tym blokiem funkcyjnym. W przypadku zmiennej globalnej są one znane każdej z funkcji obecnych w programie; stąd są one nazywane "globalnymi".
  2. Zmienne globalne zachowują swoją wartość do czasu, gdy program znajduje się w fazie wykonania, ponieważ są przechowywane w ustalonej lokalizacji ustalonej przez kompilator. Zmienne lokalne są przechowywane na stosie; w związku z tym nie zachowują swojej wartości, ponieważ "stos" ma charakter dynamiczny, ale kompilator można skierować, aby zachować jego wartość, używając "statycznego" modyfikatora.
  3. Jeśli deklarowana jest zmienna globalna i lokalna o tej samej nazwie, wówczas wszystkie instrukcje bloku kodu, w którym zadeklarowana jest zmienna lokalna, będą odnosić się tylko do zmiennej lokalnej i nie spowodują żadnego efektu dla zmiennej globalnej.
  4. Zmienna lokalna jest niszczona, gdy kontrola programu wychodzi z bloku, w którym deklarowana jest zmienna lokalna. Jednak zmienna globalna jest niszczona po zakończeniu działania całego programu.

Wniosek:

Zmienne lokalne i globalne są równie potrzebne podczas pisania programu. Jednak deklarowanie dużej liczby zmiennych globalnych może być problematyczne w dużym programie, ponieważ może powodować niepożądane zmiany w zmiennej globalnej; i trudno byłoby określić, która część programu dokonała tej zmiany. Dlatego należy unikać zgłaszania niepotrzebnych zmiennych globalnych.

Top